Code前端首页关于Code前端联系我们

CSS三角形干净代码编写方法(兼容IE6)

terry 2年前 (2023-09-27) 阅读数 64 #数据结构与算法

制作三角形的方法有以下几种:

  • 图片、精灵图片(网易)
  • 字体图标(京东)编写代码(Azonmaure代码)

这里呈现的干净代码主要是编写的。

优点

  1. 代码中写出的三角形无论大小都不会变形。
  2. 代码运行速度比图像快。
  3. 如果项目中没有引用字体图标,编码更可靠。

原理

基本原理是利用CSS盒模型中的border属性
利用border属性可以实现三角形的图形效果,兼容性很好。底层受边框样式的 inset/outset 影响。即使在互联网的早期,有边框的 3D 效果也非常流行。

1。首先创建一个div

<div></div>
复制代码

2。然后设置div的边框。

div{
    width:200px;
    height:100px;
    border:10px solid red; 
}
复制代码

可以看到效果:CSS三角形纯代码写法(兼容IE6)

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; 
}
复制代码

可以看到如下效果: CSS三角形纯代码写法(兼容IE6)

可以看到两个边框相交的地方,有一条斜边。 。

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;
}
复制代码
CSS三角形纯代码写法(兼容IE6)

这个三角形就完成了。那么问题来了,这就是兼容性问题,IE6的兼容性问题。如果不需要兼容IE6,可以忽略下一步。

6。兼容IE6浏览器

IE6中同一个三角形是什么意思? CSS三角形纯代码写法(兼容IE6)

这是因为

  • IE6不支持透明框
  • IE6最小高度为19像素,并且在IE6下不支持0

。每个 div 为 19 像素 无法设置以下高度。这是因为IE6有一个默认高度。这个问题是IE6下默认行高造成的。

最简单的解决方案:(稍后添加)

div{
    /*不支持transparent*/
    border-style:solid dashed dashed dashed;
    /*高度最小不为0*/
    overflow:hidden;
}
复制代码

其他解决方案:

  1. 我在网上查了一下。如果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);
}
复制代码
  1. 如果我们要解决IE6的高度问题(可以加下划线表示兼容IE6)
div{
    height:0;
    font-size:0;
    line-height:0;
    overflow:hidden;
}
复制代码

7.解决嵌套元素的三角形渲染问题

为什么会出现这个问题

因为我们用了

来制作三角形。当然,我们经常使用或伪元素来创建小图标。那么显示器可能会出现问题。代码如下:
<style>
em{
	width: 0;
	height: 0;
	border-width: 50px;
	border-color: transparent transparent transparent #f40;
	border-style: solid;
}
</style>

<em></em>
复制代码

可以看到页面是这样的: CSS三角形纯代码写法(兼容IE6)

为什么会是这样呢?让我们仔细看看。它实际上看起来像这样。 CSS三角形纯代码写法(兼容IE6)

这是因为

  1. 行内元素本身是固定高度的,不能将宽高设置为0,所以顶部和底部都是50px也可以,但是中间的间距被拉长,这样就形成了梯形效果。 。
  2. 而如果上面没有块元素,则从嵌入元素的内容开始计算,所以上面的框架被放置在浏览器可见区域的顶部。

解决方案

您可以通过多种方式做到这一点:

1。去掉固定内容高度

使用font-size:0;删除内容的固定高度。

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;
}

复制代码

最终代码

以下是兼容IE6版本的三角代码。

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写的*/
}
复制代码

改变边框的宽度,三角形就会变大而不变形。非常明亮。

==三角形完成了。 ==

延伸

直角三角形

以上三角形都是45度三角形。三角形的角度由边框的高度和宽度决定。 CSS三角形纯代码写法(兼容IE6)

比如像这样的三角形,只需确保上下宽度和左右宽度不同即可。

div{
	width: 0px;
	height: 0px;
	margin: 100px auto;
	border-width:10px 30px;
	border-color:transparent transparent transparent red;
	border-style:solid;
}
复制代码

有一个直角三角形

CSS三角形纯代码写法(兼容IE6)

看一下,可以看到上面和直角三角形同时设置为相同的颜色。出现一个直角三角形。

div{
	width: 0;
	border-width: 20px 10px;
	border-style: solid;
	border-color: red red transparent transparent;
}
复制代码

箭头

CSS三角形纯代码写法(兼容IE6)

其实原理很简单,就是两个三角形重叠。上面的三角形是背景色

<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>
复制代码

对话面板

CSS三角形纯代码写法(兼容IE6)

为此使用伪元素非常方便。

<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-radiusCSS三角形纯代码写法(兼容IE6)

<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,也可以使用变换旋转属性:CSS三角形纯代码写法(兼容IE6)

作者:a1burning
来源:掘金

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门