ie的兼容问题以及处理
1:常见的兼容问题
兼容:通过代码实现各浏览器表现一致性
1.ie8下图片边框问题
<a><img src="" alt=""></a>
解决方法
img{
border:0;//去掉ie8下图片边框
or vertical-align:middle; 取消下间隙
}
2.图片下间隙问题
解决方法:
1)图片转换为块元素 display:block;
2)给父元素加font-size:o;line-height:0;(局限)
3)垂直对齐 vertical-align:middle;
3.文本框和提交按钮对不齐现象
解决方法:
1、不用普通按钮 用a元素模拟按钮 js提交
2、给按钮外边套一个div
4.ie6下小高度问题
解决方法 div{
font-size:0px;
line:height:0px;
}
2:css hack
hack: 针对不同浏览器写不同的结构或css代码 就叫hack
结构hack :用于ie浏览器不同版本
6种条件: 大于 小于 等于 大于等于 小于等于 非 >=ie6 =ie6
<!--[ if IE 6 ]> 开始
<p>只在ie6显示</p>
<![endif]--> 结束
CSS Hack实际上是指特殊的代码,这段代码只在某些浏览器中可以识别,而在其他浏览器不能识别,通过这种方式,来为一些浏览器设置特殊的代码使用:在使用条件Hack时,需在HTML中添加link样式,在样式中添加脚本,写法如下:
<!--[if IE 8]>
<link rel='stylesheet' type='text/css' herf='css/sty-ie8.css'>
<![endif] -->
写法如下:语法:
<!--[if <keywords>? IE <version>?]><![endif]-->
HTML代码块<![endif]-->keywords取值|
if条件共包含6种选择方式:是否、大于、大于或等于、小于、小于或等于、非指定版本选择方式说明是否指定是否IE或IE某个版本。
关键字:空大于选择大于指定版本的IE版本。
关键字:gt(greater than)大于或等于:选择大于或等于指定版本的IE版本。
关键字:gte(greater than or equal)小于选择小于指定版本的IE版本。
关键字:lt(less than)小于或等于选择小于或等于指定版本的IE版本。
关键字:lte(less than or equal)
非指定版本选择除指定版本外的所有IE版本。关键字:!
<mark>ie10以上已经将条件hack废除</mark>
属性hack
_display:inline; 针对ie6及其以下浏览器
*display:inline; 针对ie7及其以下浏览器
display:inline\0; ie8,ie9两个浏览器
.test {
w200
h200
bgc:red;//谷歌 火狐显示红色
_bgc:yellow; ie6及其以下显示黄色
*bgc:green;ie7及其以下显示绿色
bgc:orange\0;ie8,ie9 显示橘色
}
<div class="test"></div>
选择符hack
*html .box {
bgc:red;
}//ie6添加此样式 *+ html .box {
bgc:red;
}
//只有ie7才识别
3:经典常见布局
自适应: 盒子宽度随着屏幕宽度发生变化 百分比
1:两列自适应布局
要求:左侧盒子固定,右侧盒子100% 左侧盒子加左浮动属性 ===>浮动元素会覆盖标准盒子
2: 三列自适应布局
左右两侧固定宽度,中间盒子自适应
技术点: 负外边距 margin-left:-px + 相对定位 (left-,right-)+ 浮动并排
<mark>设置最外侧盒子的内边距吧实现的</mark>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> * {
padding: 0;
margin: 0;
}
.container {
/* min-height: 最小高度 if 内容的高度<300px 取300px */
min-height: 300px;
/* 4:内边距 ---> 把内容挤到中间来 */
padding: 0px 220px 0px 200px;
}
.left {
width: 200px;
height: 400px;
background-color: red;
float: left;
/* 2:向左走100% */
margin-left: -100%;
/* 5:利用相对定位想左移动自身的宽度 */
position: relative;
left:-200px;
}
.center {
width: 100%;
height: 400px;
background-color: deeppink;
float: left;
}
.right {
width: 220px;
height: 400px;
background-color: palegreen;
float: left;
/* 3: */
margin-left: -220px;
/* 6:利用相对定位想右移动自身的宽度 */
position: relative;
right: -220px;
}
</style>
</head>
<body>
<div class="container">
<!-- 100%宽度 自适应 保证左右两侧的盒子同时和他并排右侧 -->
<div class="center">中心盒子</div>
<!-- 固定宽度 -->
<div class="left">左侧盒子</div>
<div class="right">右侧盒子</div>
</div>
</body>
</html>
双飞翼布局
始于淘宝UED UED
<mark>特点: 给中心盒子在套一个盒子 ,这个盒子设置左右两侧的外边距 ,目的是把内容放到中心盒子身上展示</mark>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> * {
padding: 0;
margin: 0;
}
.c {
min-height: 400px;
}
.center {
width: 100%;
height: 400px;
background-color: red;
float: left;
}
.left {
width: 200px;
height: 400px;
background-color: skyblue;
float: left;
margin-left: -100%;
}
.right {
width: 220px;
height: 400px;
background-color: silver;
float: left;
margin-left: -220px;
}
.inner {
margin: 0px 220px 0px 200px;
}
</style>
</head>
<body>
<div class="c">
<div class="center">
<div class="inner">
中间盒子
</div>
</div>
<div class="left">左侧盒子</div>
<div class="right">右侧盒子</div>
</div>
</body>
</html>
3:等高布局
height:auto时的现象
height:auto 全部都是内容撑开
每一列盒子高度同时变化,以最高的那列为基准 整个盒子的高度应该取决于最高的那列
3:真等高—>背景盒子法
原理:父盒子取决于内容盒子里最高的盒子的高度
1.多列浮动并排 清除浮动影响
2.给最外侧的盒子再套几个盒子 套的盒子数量 =列的数量(每一列都要分配一个背景盒子)
3.先移动倒数第二层的盒子, 然后依次移动倒数 第三层…
设置负外边距移动
4.移动相应的列到相应的背景盒子 通过相对定位正值 第一个移动的 向右移动的是第三列+第二列的宽度…
5.最外侧盒子添加一个overflow:hidden;
缺点:需要嵌套多个标签 结构略微复杂 理解也比较困难
优点:真的等高,兼容性较好
<mark>每一个背景盒子都要设置一致的宽度</mark>
[外链图片转存失败(img-j58au3Or-1563371263615)(C:\Users\Public\Nwt\cache\recv\夏峰慧\day07\笔记\media\等高1.webp)]
法
原理:父盒子取决于内容盒子里最高的盒子的高度
1.多列浮动并排 清除浮动影响
2.给最外侧的盒子再套几个盒子 套的盒子数量 =列的数量(每一列都要分配一个背景盒子)
3.先移动倒数第二层的盒子, 然后依次移动倒数 第三层…
设置负外边距移动
4.移动相应的列到相应的背景盒子 通过相对定位正值 第一个移动的 向右移动的是第三列+第二列的宽度…
5.最外侧盒子添加一个overflow:hidden;
缺点:需要嵌套多个标签 结构略微复杂 理解也比较困难
优点:真的等高,兼容性较好
<mark>每一个背景盒子都要设置一致的宽度</mark>