前端CSS画图形

devtools/2024/9/24 3:05:14/

我以前一直很好奇,这些下拉菜单中的小箭头是怎么实现的,直到我看到了进阶的CSS。

OK,let me tell you hao to do.

 


想要实现这个效果,方法很多,我知道的就两个:

图片作弊法,CSS妙用法 

图片作弊法适合自己做着玩的,但不适合上线的网站——因为多一个图片意味着多一个HTTP请求,这对于服务器的压力可想而知。

SO,有没有更好的办法? 

那就是CSS妙用法。


我们都知道,每一个块元素都是有border属性的,那么我们为什么不尝试使用border去画一个三角形呢?

这个时候,聪明的小伙子就要:

???

那我要是告诉你,这个三角形就是使用边框做出来的,你敢信吗?

在没有学到之前,我也不信的,直到我学到了。

这个时候,就得先介绍一下border属性啦:

border-width、border-style、border-color


如果我们给一个div元素设置:

border-width: 30px;

border-style: solid;

border-color: #982053 #721394 #333 #897923;

就可以获得:

一条神奇的边框

 


如果我们再修改一下div的长度,就可以获得:

 

灰常地beautiful~

div是块级元素,块级元素有个最大的特点就是:

独占一行

所以,如果我们限制了块级元素的宽为0,就让内容区丢失了,这个时候,padding又没有,所以边框是全部“挤”在一起,就成了上面的模样。


我们知道,border-color有个参数,叫做透明shai。

如果我只保留一个边框有shai,那会发生什么事情?

就可以神奇地发现,原来能创造出这么多三角形。

而如果我们只需要保留向上的三角形,该怎么办?

很简单,直接去掉左上右这三个边框的颜色就OK了。


但是这还不够完美,我们的目的是获得一个三角形。

这个时候,我们再在div内部创建一个div,用同样的方法进行创建(注意border-width的属性值要小于父盒子的),就可以发现:

???儿子怎么骑到父亲的头上去了???

那接下来该怎么办?

使用定位,让子盒子移动到父盒子内部即可:

这是不是特别像个三角形了?

如果我们再把子盒子的颜色改为背景色一样的颜色,就可以获得:

是不是很简单呢?


全部代码:

    <style>.father{position: relative;width: 0px;border-width: 30px;border-style: solid;/* border-color: #982053 #721394 #333 #897923; */border-color: transparent transparent #333 transparent;}.son{position: absolute;top: -26px;left: -28px;width: 0px;border-width: 28px;border-style: solid;border-color: transparent transparent #fff transparent;}</style><body><div class="father"><div class="son"></div></div>
</body>

这里又是一个子绝父相的好例子。


http://www.ppmy.cn/devtools/92498.html

相关文章

Vue 项目中导入文件时如何默认找寻该文件夹下的 index.vue 文件

文章目录 需求分析 需求 如下图&#xff0c;在Vue 项目中导入 frequencyChange 文件夹时如何默认找寻该文件夹下的 index.vue 文件 分析 确保项目结构和命名约定 首先&#xff0c;确保你的 Vue 单文件组件按照约定命名&#xff0c;例如&#xff1a; components/Example/inde…

Python爬虫——爬取bilibili中的视频

爬取bilibili中的视频 本次爬取&#xff0c;还是运用的是requests方法 首先进入bilibili官网中&#xff0c;选取你想要爬取的视频&#xff0c;进入视频播放页面&#xff0c;按F12&#xff0c;将网络中的名称栏向上拉找到第一个并点击&#xff0c;可以在标头中&#xff0c;找到…

24/8/9算法笔记 随机森林

"极限森林"&#xff08;Extremely Randomized Trees&#xff0c;简称ERT&#xff09;是一种集成学习方法&#xff0c;它属于决策树的变体&#xff0c;通常被归类为随机森林&#xff08;Random Forest&#xff09;的一种。极限森林的核心思想是在构建决策树时引入极端…

Docker技术背景与应用:解决现代开发中的关键问题

目录 Docker技术背景与应用&#xff1a;解决现代开发中的关键问题 一、Docker的技术背景 1. 什么是Docker&#xff1f; 2. Docker的核心组件 3. Docker的历史发展 二、Docker解决了哪些问题&#xff1f; 1. 环境一致性问题 2. 依赖管理问题 3. 部署复杂性问题 4. 资源…

Vue.js 框架兼容 Internet Explorer (IE) 浏览器指南

在现代Web开发中&#xff0c;尽管Internet Explorer (IE) 浏览器的市场份额在逐渐下降&#xff0c;但在某些特定场景下&#xff0c;仍需要保证应用能够兼容IE。本文将介绍如何让你的Vue.js应用兼容IE11&#xff0c;并提供详细的步骤说明。 准备工作 确保项目使用Vue 2.x&…

JAVA集中学习第四周学习记录(三)

系列文章目录 第一章 JAVA集中学习第一周学习记录(一) 第二章 JAVA集中学习第一周项目实践 第三章 JAVA集中学习第一周学习记录(二) 第四章 JAVA集中学习第一周课后习题 第五章 JAVA集中学习第二周学习记录(一) 第六章 JAVA集中学习第二周项目实践 第七章 JAVA集中学习第二周学…

【区块链+社会公益】腾讯志愿者公益平台 | FISCO BCOS应用案例

由腾讯技术公益团队主导的“公益志愿者平台”&#xff0c;旨在链接公益组织和志愿者。公益组织入驻平台后可以发布公 益活动、征集志愿者&#xff0c;志愿者可以在平台报名参加公益活动、获得公益组织和平台联合颁发的志愿服务证书。 腾讯技术公益采用了微众区块链技术对 “公…

高并发下的分布式缓存 | Write-Through缓存模式

缓存系列文章链接如下&#xff1a; 高并发下的分布式缓存 | 缓存系统稳定性设计 高并发下的分布式缓存 | 设计和实现LRU缓存 高并发下的分布式缓存 | 设计和实现LFU缓存 高并发下的分布式缓存 | Cache-Aside缓存模式 高并发下的分布式缓存 | Read-Through缓存模式 Write-Throug…