★ 超出省略号代替
{display:block;white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
需要多个属性配合
强制不换行 white-space:nowrap;
自动换行 word-wrap: break-word; word-break: normal;
强制英文单词断行 word-break:break-all;
文字两端对齐 text-align:justify
★ 对于不支持max min css属性的低版本浏览器的处理方法:
body {
font-family: microsoft Yahei;
min- 1200px;
background: #f5f5f5;
_ expression(document.documentElement.clientWidth>1200?document.documentElement.clientWidth:1200);
}
★ CSS3 Transition详细研究并理解记住,挺有用的
RGBA和opacity的区别
opacity会使整个元素包括子元素透明,而RGBA仅仅是元素本事透明,子元素不透明
background:rgba(0,0,0,.5);
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#BF000000,endColorstr=#BF000000);
我们需要留意的是StartColorStr和EndColorStr的值,前两位是十六进制的透明度,后面六位是十六进制的颜色。
换算方法:x=alpha*255 将计算的结果x转换成十六进制即可
★ 关于 display:inline-block的使用注意的一个场景:
<div><a></a>……<a></a></div>
div设置宽度,a标签设置字体大小宽度和margin值,在前端demo中无任何问题,但是在thinkPHP框架项目下,a实际宽度多了一像素,导致布局错乱。
对比样式,发现完全一致。使用float:left后解决。
所以以后还是要慎用inline-block,毕竟低版本浏览器支持不全,并且使用block+float只是顺手的事情。
★ CSS字体设置
font简写:
这个简写属性用于一次设置元素字体的两个或更多方面。使用 icon 等关键字可以适当地设置元素的字体,使之与用户计算机环境中的某个方面一致。注意,如果没有使用这些关键词,至少要指定字体大小和字体系列。
可以按顺序设置如下属性:
- font-style 字体样式 [normal(正常) | italic(斜体) | oblique(倾斜)]
- font-variant 字体变化[normal(正常) | small-caps(小体大写字母)]
- font-weight 字体粗细[normal(正常) | bold(粗体) | bolder(更粗) | lighter(更细) | 100-900(400:normal,700:bold) 前面两个都支持,后面三个看浏览器了]
- font-size/line-height 字体大小/行间距[%,px,em,rem]
- font-family 字体族["具体的字体",通常字体(可理解为字体类型,字体系列)] 详情点击css字体系列
可以不设置其中的某个值,比如 font:100% verdana; 也是允许的。未设置的属性会使用其默认值。
★display[block/none]/visibility[hidden/visible]区别
display隐藏后,元素不可见,并且不再占据空间,其他dom有可能会占据他的空间
visibility隐藏后,元素不可见,但是仍然占据空间,其他dom时不会占据他的空间的
★ css3旋转动画
.my-case a span{
-webkit-transition: -webkit-transform 0.3s;
-ms-transition: -ms-transform 0.3s;
-o-transition: -o-transform 0.3s;
transition: transform 0.3s;
}
.my-case a:hover span{
-webkit-transform: rotate(180deg);
-moz-transform: rotate(180deg);
-ms-transform: rotate(180deg);
-o-transform: rotate(180deg);
transform: rotate(180deg);
}
只写下面这个是不可以的,必须有上面的那个才可以动起来
★ 关于css字体大小单位的认识
常用的单位有px em rem ……(其他的有空在研究)
px是像素,是长度单位。经常被用来设置字体大小
em是倍数单位,相对于父容器字体大小的倍数
如:<div><a></a><div>
div设置(或继承自他的父容器)的字体大小是10px,那么在a上设置字体大小为2em,就是20px
rem也是倍数单位,相对于根元素<html>的字体大小的倍数。
如:<html><div><a></a></div></html>
html设置为10px的话,div和a都设置为2rem,则他们字体都是20px。
如果这是设置div为2rem(即20px),a设置为2em和2rem,大小分别是40px和20px
另外:
① rem的作用,主要是用来统一修改整体页面字体大小用的。也简化了设置字体大小的计算过程,不然一级一级的父容器向上找字体大小值也挺麻烦的。
如果用px的话是无法通过修改一个地方就达到修改整体字体大小的作用。如果用em的话,一级一级的父容器会导致很复杂。
② em,rem也可以被用来设置text-indent,margin,padding,line-height等。这个时候em依据的是当前设置对象的字体的大小。而不是它的容器的字体大小
举例:<html><div><a>一二三四五六七八九十</a></div></html>
html{font-size:20px}div{font-size:20px} a{display:block;font-size:10px;text-indent:2em;line-height:1em;margin-right:2rem}
此时text-indent:2em为20px,line-height:1em为10px,margin-right:2rem为40px
③ rem不支持ie8,em支持。考虑兼容ie8的话一般是这样设置的{font-size:20px;font-size:2rem} 有点麻烦。
可以考虑使用兼容ie的两个方法(手写html法和js检测法,以后有空写),然后写单独的ie兼容样式进去
④。为了物尽其用,正确发挥rem和em的作用,在以后设置字体的时候,如果不是特殊需求,推荐使用px,如果有响应式需求,首先选择rem,但是设置缩进内边距行间距的时候推荐使用em。这样他们会随着实际字体大小的改变而改变,如果使用rem和px的话,这些边距行间距不会随着字体大小改变而改变【当然实际应用中,需求极其复杂,真正掌握知识,才能灵活应用】
使用rem时,如果不去做类似下面的操作,那么它和用px没有任何功能上的区别,都是写死的固定的单位,可以看做一个(ie8不支持)的(px的代号)单位。
html { font-size: 62.5%; } @media only screen and (min- 481px){ html { font-size: 94%!important; } } @media only screen and (min- 561px){ html { font-size: 109%!important; } } @media only screen and (min- 641px){ html { font-size: 125%!important; } }
【如上面代码,用rem就是为了方便的统一设置字体大小用的,不然和px有何区别?徒增ie8不支持的烦恼罢了】
所以:如果不是和字大小相关太密切,需要随着字体大小改变而改变的,不推荐使用em和rem,直接用px,然后每个对应的模块写自己的响应式css代码就好了
@media (min- 768px) {
/*成功案例*/
.xh-suc{
padding: 2rem;
}
}
@media (min- 992px) {
/*成功案例*/
.xh-suc{
padding: 3rem;
}
}
在上面这种情况中,还不如用px呢。横竖你都要重设大小,这样反而不用考虑ie8的兼容情况。不然用em也行啊
两篇文章:
http://www.w3cways.com/1713.html
http://www.520ued.com/article/53e98eafbb16a74c41b5de77
★ 兼容低版本ie的集中方法
【本地项目在“D:MY_WEB_DEMOMyFrontFrameJS-PluginfuckIE 对兼容IE(各版本)的研究成果”文件夹中】
1、参考360导航,360搜索网站的做法:
<!DOCTYPE html>
<!--[if lt IE 7 ]><html class="ie6"><![endif]-->
<!--[if IE 7 ]><html class="ie7"><![endif]-->
<!--[if IE 8 ]><html class="ie8"><![endif]-->
<!--[if IE 9 ]><html class="ie9"><![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--><html class="w3c"><!--<![endif]-->
然后css中这样写:
#head{}
.ie7 #head,.ie6 #head{} //这里写在所有对应样式的后面,看起来不会太乱的
好处:只加载一个样式。
缺点:每个页面都要这样写开头,不方便。
2、和上面的那个一样,只不过通过js自动完成
我知道的有一个叫modernizr.js的可以做到(简单看了一下,这货不是干这个用的?那就考虑自己写一个js插件来实现吧)
【上面说的无法实现,自己写也不行,js无法操作html以外部分,只能通过后端部分实现(但前端开发时还是要自己写,而且写完给后端还要删掉?so此路不通),或者给html添加不同class方法来间接实现】
好处:只加载一个样式。且不用每个页面都这么写开头
缺点:多了一个js占用资源
3、通过 条件注释法 实现
<!--[if IE 8 ]><link href=“ie8.css”><![endif]-->
<!--[if IE 7 ]><link href=“ie7.css”><![endif]-->
<!--[if IE 6 ]><link href=“ie6.css”><![endif]-->
需要多加载额外样式,开发中,需要写多个css文件,每个对应的html文件都要有这个引用,每个对应的兼容css文件都要重新写,即便代码兼容方案相同
4、通过 类内属性前缀法 实现
hack
|
写法
|
实例
|
IE6(S)
|
IE6(Q)
|
IE7(S)
|
IE7(Q)
|
IE8(S)
|
IE8(Q)
|
IE9(S)
|
IE9(Q)
|
IE10(S)
|
IE10(Q)
|
*
|
*color
|
青色
|
Y
|
Y
|
Y
|
Y
|
N
|
Y
|
N
|
Y
|
N
|
Y
|
+
|
+color
|
绿色
|
Y
|
Y
|
Y
|
Y
|
N
|
Y
|
N
|
Y
|
N
|
Y
|
-
|
-color
|
黄色
|
Y
|
Y
|
N
|
N
|
N
|
N
|
N
|
N
|
N
|
N
|
_
|
_color
|
蓝色
|
Y
|
Y
|
N
|
Y
|
N
|
Y
|
N
|
Y
|
N
|
N
|
#
|
#color
|
紫色
|
Y
|
Y
|
Y
|
Y
|
N
|
Y
|
N
|
Y
|
N
|
Y
|