整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

CSS三角的写法(兼容IE6)

CSS三角的写法(兼容IE6)
  • 1. 先创建一个div
  • 2. 然后给div设定边框。
  • 3. 给div的四个边框都设置不同的颜色
  • 4. 把宽度和高度都变成0
  • 5. 其余角为透明
  • 6. 兼容IE6浏览器
  • 造成这样的原因是:
  • 最简单的解决办法:(后面添加)
  • 其他的解决办法:
  • 7. 解决内联元素的三角显示问题
  • 为什么会有这个问题
  • 解决办法
  • 1. 去掉固定的内容高度
  • 2. 将内联元素转化为块级元素或者行内块元素
  • 3. 将元素脱标(如果涉及特殊的布局可以直接使用)
  • 最终代码
  • 扩展
  • 有角度的三角
  • 有一个角是直角的三角
  • 箭头
  • 对话框
  • 兼容IE8的小圆角矩形
  • 利用css3旋转来制作三角形

简介

三角的做法有好几种:

  • 图片、精灵图(网易)
  • 字体图标(京东)
  • 纯代码写(亚马逊)

这里主要介绍的纯代码写的。

优点

  1. 代码写的三角,不管大小是多少,是不失真的。
  2. 代码运行比图片更快。
  3. 如果项目中没有引用字体图标,代码写是比较可靠的。

原理

原理就是使用css的盒模型中的border属性

使用border属性就可以实现一个兼容性很好的三角图形效果,其底层受到border-style的inseet/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; 
}

可以看到以下效果:

可以看到两个border交叉的地方,有斜边存在。

4. 把宽度和高度都变成0

div{
 width:0px;
 height:0px;
 border-left:10px solid red;
 border-top:10px solid green; 
 border-right:10px solid blue; 
 border-bottom:10px solid yellow; 
}
/*也可以这么写*/
div{
 width:0px; 
 height:0px;
 border:10px solid; 
 border-color:red green blue yellow;
}

可以看到以下效果:

这个时候就看得很明显了,出现了四个三角。那如果要出现一个,那么就将其他的三个弄成透明色就可以了。

这个就是三角形的由来。

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不支持border的transparent
  • IE6的高度最小为19px,不支持高度为0

在IE6下面,如果想把元素例如div设置成19像素以下的高度就设置不了了。这是因为IE6浏览器里面有个默认的高度,IE6下这个问题是因为默认的行高造成的。

最简单的解决办法:(后面添加)

div{
 /*不支持transparent*/
 border-style:solid dashed dashed dashed;
 /*高度最小不为0*/
 overflow:hidden;
}
  1. 查了查网上的,如果是IE6不支持transparent, 可以这么做:
div{
 border:solid 1px transparent; 
 _border-color:tomato; 
 _filter:chroma(color=tomato); 
}

所以我觉得用在这里也可以, BUT没有亲测过,如果哪位小可爱测过可以请告知我^ ^。

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. 解决内联元素的三角显示问题

为什么会有这个问题

因为我们刚才用 <div> 去制作三角,当然我们经常会使用 <em><i> 或者伪元素去做一些小图标。那么在显示上面,可能会有问题。 下面的代码:

<style>
em{
	width: 0;
	height: 0;
	border-width: 50px;
	border-color: transparent transparent transparent #f40;
	border-style: solid;
}
</style>
<em></em>

可以看到页面是这个样子的:

为什么是这个样子的,那么我们再看的仔细一点。 它实际是这个样子的。

造成这样的原因

  1. 是因为行内元素自己有固定的高度,不能设置宽高为0,所以上面下面都是50px没有问题,但是中间撑开了距离,也就有了梯形的效果。
  2. 而且如果上面没有块元素的时候,是从内联元素的内容开始算起的,所以上面的border就会到浏览器可视区域的上面。

解决办法

这个有很多的办法:

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写的*/
}

改变border-width,三角变大,是不失真的。很清晰。

==三角制作完成 。==

扩展

有角度的三角

上面制作的都是45度的三角,三角可以通过border的高度宽度确定角度。

比如这样一个三角,只需要确定上下的和左右的宽度不一样即可。

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>

对话框

这个使用伪元素去做就很方便。

TML 5 是最新的超文本标记语言 (HTML),它是用于描述网页内容和外观的标准编程语言。如今,所有主要浏览器(ChromeSafariFirefoxOpera IE)都提供 HTML5 支持,这使其成为当今使用的最新 HTML 技术。

下面列出了 HTML5 的一些惊人优势:

1. 跨浏览器兼容性

HTML5 易于实现,并且可以与 CSS3 一起使用。今天所有的浏览器都支持 HTML5 标签,甚至 IE6 也能理解标记 <!doctype html> 并且会正确地呈现页面。

2. 新的 DOCTYPE 声明:

关于 HTML 5 最重要的事实是 - HTML5 易于实现并且可以与 CSS3 一起使用

HTML5 DOCTYPE 声明非常简单:

<! DOCTYPE html>

是的,只有DOCTYPE”和“html”这两个词,不再有长行充满脏标签的不可读代码。

3. 带来可用性和用户体验的改进

可用性和用户体验与网站或应用程序的设计程度有关。我们都想要更好的动态网站和美观的应用程序与用户交互并允许用户享受功能、内容等,而不仅仅是看它。HTML5 Web 具有多项技术增强和改进功能,并且使用 HTML5 代码,Web 开发人员可以轻松设计更好的应用程序和动态网站,从而带来更好的用户体验和可用性。

4. 替代 Flash Silver light

HTML5超越FlashSilver light而领先只是因为播放Flash文件和Silver light需要安装Adobe Flash最新版本或Silver light插件,还需要注意设备和操作系统的兼容性. HTML 5 并非如此。因此,HTML5 如今在公司中变得越来越流行,因为它提供了大量的属性和功能,可帮助 Web 开发人员以最少的工作量构建漂亮的网站和应用程序。


5. 大量用于移动应用和游戏

HTML5 在移动应用程序和游戏开发中的适应性随着 HTML5 Web 应用程序工具在从用户界面 (UI)、开发、使用脚本等开始的所有情况下为 Web 开发人员提供了更大的灵活性而增加。

HTML5 还能够处理多媒体内容,而无需安装插件,我们可以使用该技术轻松开发交互式游戏。

6. 干净的标记和改进的代码

HTML5 带有简洁的标记和简洁的代码,使其比以前的版本更易于访问。HTML 5 允许 Web 开发人员和 Web 设计人员使用更简洁的代码并删除 div 标签并将所有 div 标签替换为新的 HTML 5 元素。

7. 离线浏览

HTML5 还提供离线浏览功能,这意味着访问者可以在没有有效互联网连接的情况下加载网页上的某些元素。假设你访问了该站点,但不知何故你现在没有连接到互联网,或者互联网连接发生故障。使用 HTML5 离线缓存,我们仍然可以加载网站的核心元素,你可以离线查看它们。

8. HTML5 在网站抓取和索引方面对 SEO 友好:

如今,为了在包括谷歌在内的不同搜索引擎中获得并保持最高排名,必须小心优化网站和所有必要的 SEO 模块。HTML 5 带有各种属性和模块,使网络爬虫可以轻松搜索你的内容并使其正确编入索引,从而提高其在搜索引擎搜索结果页面中的排名。HTML5 的技术提供了具有广泛结构元素、语义、表单类型、新属性和媒体元素的各种功能,使数字营销专家和开发人员更容易专注于更好的搜索引擎优化技术并推动更多的自然搜索流量。


9. 视频和音频支持

借助 HTML5 技术,我们不再需要依赖第三方插件来渲染音频和视频。你可以忘记 Flash Player 和其他第三方媒体播放器和插件。你可以使用新的 HTML5 <video> <audio> 标签轻松访问你的视频和音频。

以前你必须使用旧的 <embed> <object> 标签并分配大量参数,以显示视频可见并正常工作。但是使用 HTML5 的视频和音频标签,我们可以将它们视为图像; <video src=url/>

我们只需要像任何其他 HTML 元素一样在单行标签中定义高度、宽度和自动播放等参数:<video src=url width=800px height=500pxautoplay/>

10. 地理位置支持

在地理定位的帮助下,我们可以轻松地找出我们在世界上的位置,并轻松地与人们分享这些信息。过去,如果我们想首先检测客户端设备的位置,我们必须查看客户端 IP 地址、你的无线网络连接、手机的基站和纬度和经度。但是对于 HTML5,已经开发了一组 API,它们可以有效地允许客户端设备(即你的手机、IP 甚至你的桌面浏览器)使用你的 HTML5 兼容浏览器直接可用的 JavaScript 检索地理定位信息。

HTML5 改进并增强了浏览体验。那么为什么不为你的网站和移动应用程序采用 HTML 5 呢?


了解更多

  1. 搞清浏览器作用
  2. 搞清什么是HTML
  3. html作用
  4. html我们涉及哪些基础知识
  5. 常见html单词及单词功能作用有哪些
  6. html结构
  7. html与CSS关系
  8. 1、搞清浏览器作用

浏览器主要作用是浏览网页作用,在DIV+CSS制作开发时候仍然是浏览我们制作开发重构网页作用。浏览器可测试我们开发的CSS网页兼容性、网页效果、因开发疏忽导致错误等作用。

在CSS测试(CSS工具)里常用浏览器包括IE6、IE7、IE8、火狐(FF)、谷歌(chrome)、苹果Safari、Opera主流浏览器。至于傲游、360浏览器因为他们使用你系统自带的IE内核,所以不必考虑,只要支持你浏览器版本即支持类似这2款浏览器

2、搞清什么是HTML

html是hypertext markup language的缩写,即超文本标记语言。可以这样理解,HTML文件是一定规则规律以html\htm等命名后缀名的文本文件。

3、html作用

HTML作用,通过一定html自身语法结构(html结构),显示文字、图片、动画(flash)、视频或音频音乐。而CSS则是配合html实现漂亮的各式各样的页面内容。

4、html我们涉及哪些基础知识

Html扩展名、html源代码、DOCTYPE、html结构、head标签、charset

5、常见html单词及单词功能作用有哪些

a、B(strong):加粗

b、P:换行实例:<p>我是第一段内容</p><p>我是第二段内容</p>

c、Br:提行实例:我是第一排<br />我是第二排内容

d、px:像素、长度宽度单位

实例:width:30px; 宽度30像素

e、ul、ol、li列表标签实例:

<ul> <li>列表一</li> <li>列表二</li> <li>列表三</li> </ul> <ol> <li>列表一</li> <li>列表二</li> <li>列表三</li> </ol>

f、div与span:都是html标签

实例:<div>我占一行</div><span>我多长占多长位置</span>

两者区别:DIV占用1整排,而SPAN所占位置是内容多少占用多长长度

g、img:图片引用标签

<img src="/css-images/css-logo.gif" />图片标签

h、dl dt dd:CSS的另类表格组合

实例:

<dl>

<dt>我是标题</dt>

<dd>列表一</dd>

<dd>列表二</dd>

</dl>

j、title:标题标签

实例:<title>标题</title>

特点,在一个网页内只能使用一次(只能出现一次)

6、html结构 - TOP

这里Html结构可用于每次新建制作网页模板使用。

旧html结构:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>DIVCSS5标题</title>

</head>

<body>

具体网页呈现内容

</body>

</html>

经过CSS教程网的DIVCSS5优化后的HTML结构(可用于每次新建HTML模板):

<!DOCTYPE html>

<html>

<title>标题</title>

<meta name="keywords" content="关键字" />

<meta name="description" content="网页描述" />

<link href="这里CSS文件引入地址" rel="stylesheet" type="text/css" />

内容www.divcss5.com提供

7、html与CSS关系 - TOP

搞清楚html与CSS关系很重要,也是认识CSS基础。html与CSS关系解释:HTML内放置显示网页要显示的具体内容(图片、文字、动画等)而CSS是控制HTML内这些具体内容的怎么显示、怎么排版、颜色、大小、宽度、高度、左右布局等显示样式。

以上7点是学习CSS的html基础,可能还不完善,但是在以后运用的时候DIVCSS5会给大家详细、本简单CSS教程分为15节,此节DIV CSS教程以文字内容为主,以后会穿插更多实例和图例、跟我做的内容希望对大家能有帮助。