CSS三角形干净代码编写方法(兼容IE6)
制作三角形的方法有以下几种:
- 图片、精灵图片(网易)
- 字体图标(京东)编写代码(Azonmaure代码)
这里呈现的干净代码主要是编写的。
优点
- 代码中写出的三角形无论大小都不会变形。
- 代码运行速度比图像快。
- 如果项目中没有引用字体图标,编码更可靠。
原理
基本原理是利用CSS盒模型中的border属性
利用border属性可以实现三角形的图形效果,兼容性很好。底层受边框样式的 inset/outset 影响。即使在互联网的早期,有边框的 3D 效果也非常流行。
1。首先创建一个div
<div></div>
复制代码2。然后设置div的边框。
div{
width:200px;
height:100px;
border:10px solid red;
}
复制代码可以看到效果:
3。为div的四个边框设置不同的颜色
div{
width:200px;
height:100px;
border-left:10px solid red;
border-top:10px solid green;
border-right:10px solid blue;
border-bottom:10px solid yellow;
}
复制代码可以看到如下效果:
可以看到两个边框相交的地方,有一条斜边。 。
4。将宽度和高度更改为 0。如果你想让其中一个显示出来,只需将其他三个设置为透明即可。
这是三角形的原点。
5。使剩余的角透明
这里的设置也是按照上右下左的顺序,将不需要的角透明化。
div{
width:0px;
height:0px;
border-width:10px;
border-color:#f00 transparent transparent transparent;
border-style:solid;
}
/*也可以再进行合并*/
div{
width:0px;
height:0px;
border:10px solid;
border-color:#f00 transparent transparent transparent;
}
复制代码这个三角形就完成了。那么问题来了,这就是兼容性问题,IE6的兼容性问题。如果不需要兼容IE6,可以忽略下一步。
6。兼容IE6浏览器
IE6中同一个三角形是什么意思?
这是因为
- IE6不支持透明框
- IE6最小高度为19像素,并且在IE6下不支持0
。每个 div 为 19 像素 无法设置以下高度。这是因为IE6有一个默认高度。这个问题是IE6下默认行高造成的。
最简单的解决方案:(稍后添加)
div{
/*不支持transparent*/
border-style:solid dashed dashed dashed;
/*高度最小不为0*/
overflow:hidden;
}
复制代码其他解决方案:
- 我在网上查了一下。如果IE6不支持透明,可以这样做:
div{
border:solid 1px transparent;
_border-color:tomato;
_filter:chroma(color=tomato);
}
复制代码所以我认为这里用的是。没关系,但我还没有亲自测试过。如果有哪个可爱的小姑娘测试过请告诉我^^。
div{
width:0px;
height:0px;
margin:100px auto;
border-width:10px;
border-style:solid;
border-color:#f00 transparent transparent transparent;
_border-color:#f00 tomato tomato tomato;
_filter:chroma(color=tomato);
}
复制代码- 如果我们要解决IE6的高度问题(可以加下划线表示兼容IE6)
div{
height:0;
font-size:0;
line-height:0;
overflow:hidden;
}
复制代码7.解决嵌套元素的三角形渲染问题
为什么会出现这个问题
因为我们用了 可以看到页面是这样的: 为什么会是这样呢?让我们仔细看看。它实际上看起来像这样。 这是因为 您可以通过多种方式做到这一点: 使用font-size:0;删除内容的固定高度。 以下是兼容IE6版本的三角代码。 改变边框的宽度,三角形就会变大而不变形。非常明亮。 ==三角形完成了。 == 以上三角形都是45度三角形。三角形的角度由边框的高度和宽度决定。 比如像这样的三角形,只需确保上下宽度和左右宽度不同即可。 看一下,可以看到上面和直角三角形同时设置为相同的颜色。出现一个直角三角形。 其实原理很简单,就是两个三角形重叠。上面的三角形是背景色 为此使用伪元素非常方便。 基本原理是上下有伪元素的矩形。 之前是向上的梯形,之后是向下的梯形。 注意不要让它太宽,否则它将是一个相切的矩形,这样你就可以避免 作者:a1burning或伪元素来创建小图标。那么显示器可能会出现问题。代码如下: <style>
em{
width: 0;
height: 0;
border-width: 50px;
border-color: transparent transparent transparent #f40;
border-style: solid;
}
</style>
<em></em>
复制代码解决方案
1。去掉固定内容高度
em{
border-width: 50px;
border-color: transparent transparent transparent #f40;
border-style: solid;
font-size: 0;
}
复制代码2。将行内元素转换为块级元素或行间块元素
em{
border-width: 50px;
border-color: transparent transparent transparent #f40;
border-style: solid;
display: block; /*也可以是inline-block*/
}
复制代码3。元素标准化(特殊布局时可以直接使用)
/*脱标*/
em{
border-width: 50px;
border-color: transparent transparent transparent #f40;
border-style: solid;
position: absolute;
top:0;
left:0;
}
/*or 浮动*/
em{
border-width: 50px;
border-color: transparent transparent transparent #f40;
border-style: solid;
float:left;
}
复制代码最终代码
div{
width:0px; /*设置宽高为0*/
height:0px;/*可不写*/
border-width:10px; /*数值控制三角的大小,垂直的位置*/
border-color:#f00 transparent transparent transparent;/*上右下左,transparent是透明的*/
border-style:solid dashed dashed dashed;/*设置边框样式,dashed是兼容IE6写的*/
overflow:hidden;/*兼容IE6最小高度不为0写的*/
}
复制代码延伸
直角三角形
div{
width: 0px;
height: 0px;
margin: 100px auto;
border-width:10px 30px;
border-color:transparent transparent transparent red;
border-style:solid;
}
复制代码有一个直角三角形
div{
width: 0;
border-width: 20px 10px;
border-style: solid;
border-color: red red transparent transparent;
}
复制代码箭头
<style type="text/css">
.san {
border-width: 50px;
border-color: transparent transparent transparent #f40;
border-style: solid;
position: relative;
}
.si {
border-width: 30px;
border-color: transparent transparent transparent #fff;
border-style: solid;
position: absolute;
left: -50px;
top: -30px;
}
</style>
<!--html结构-->
<div class="san">
<div class="si"></div>
</div>
复制代码对话面板
<style type="text/css">
div{
width: 150px;
padding: 10px;
line-height: 20px;
color: #9c623f;
background-color: rgba(255, 236, 193, 0.72);
border-radius: 10px;
position: relative;
}
div::before{
content:"";
border-width: 10px;
border-color:transparent rgba(255, 236, 193, 0.72) transparent transparent;
border-style: solid;
position: absolute;
left: -20px;
top: 10px;
}
</style>
<div class="select-toast">早安,哈哈!今天天气不错,很好!</div>
复制代码兼容IE8的小圆角矩形
border-radius<style type="text/css">
div{
width: 140px;
height: 40px;
background-color: rgb(244,121,128);
position: relative;
}
div:before,
div:after {
content: "";
position: absolute;
left: 0; right: 0;
border-style: solid;
}
div:before {
top: -3px;
border-width: 0 3px 3px;
border-color: transparent transparent red;
}
div:after {
bottom: -3px;
border-width: 3px 3px 0;
border-color: red transparent transparent;
}
</style>
<div></div>
复制代码Css3旋转来制作三角形。可以使用css3,也可以使用变换旋转属性:
来源:掘金
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网