css技巧(长期更新)
总结一下css 的一些技巧。
- 文本水平居中
1 | p { |
- 容器水平居中
先给容器定宽,再margin: 0 auto
1 | div { |
- 文本垂直居中
直接将line-height
设置为容器高度即可。
1 | <div>文本</div> |
如果容器内有n行文本,则设置line-height
为height/n
即可。
- 容器垂直居中
一个大容器包含一个小容器,让小容器垂直居中。
首先设置大容器高度以及将大容器position: relative
,然后小容器定高度以及position: absolute
,top
设置为50%,margin-top
设置为负值的小容器高度的一半。
下面使用calc()
简化代码。
calc()
函数写法如下,符号两边各空一个空格。
1 | <div class="big"> |
- 图片自适应容器
1 | img { |
- 3D按钮
设置左上为浅色,右下为深色。
1 | button { |
- font简写,注意
font-family
属性值引号
分开写:
1 | p { |
写一起:
1 | p { |
- a标签的伪类
1 | a:link {} |
- IE条件注释
使用条件注释,引入只对IE生效的语句,比如这里引入只对IE生效的ie.css
样式
1 | <!--[if IE] |
区分IE版本:
1 | <!--[if IE 6]> - targets IE6 only --> |
- IE6专用语法
ie6视html
为根元素,故而以下代码仅对ie6生效。
1 | * html {} |
- IE专用语法
只有ie6可以识别属性前面的下划线
只有ie7可以识别属性前面的通配符
1 | .class { |
然而并没有什么卵用。
- 选择器优先级
1 | 行内样式 > ID > class > 标签 |
- IE6的min-height
IE6不支持min-height
解决方法一:
顺序不能乱!
1 | .class { |
解决方法二:
使用了IE6才能识别的_height
属性
1 | .class { |
- font-size统一
浏览器默认16px。
可以先设置基准文字大小为10px:
1 | body { |
后面一律使用em来设置字体:
2.4em就是24px
1 | h1 { |
- 改变字母大小写
1 | /*字母设置为大写*/ |
1 | /*字母设置与小写字母等高的大写形式*/ |
- reset.css
1 | /* http://meyerweb.com/eric/tools/css/reset/ |
- 修改list图标样式
默认:
1 | ul { |
自定义图标:
1 | ul { |
或者:
1 | ul { |
- css中的透明
1 | div { |
- css三角形
原理:容器长宽设为0,设置border-width
后,对四个border分别着色,可以看到四个不同颜色的等腰直角三角形组成了一个正方形(由border构成)。
容器长宽设置为0,设置border-width
border-style: solid
,将需要的三角形着色,其他三角形设为透明border-color: transparent
。
1 | <div class="triangle"></div> |
以上就得到了一个底边长8px红色的相左的等腰直角三角形。
详细css三角形见博客单独文章。
- 禁止文本自动换行
让文本在一行显示
1 | p { |
- 给标题设置图标
不想使用文本,想使用图标替换h1达到更好的视觉效果。但是又不能丧失SEO。
方法:
- 为容器设置宽高。
- 设置一个负的大的文本缩进将h1移出视野。
- background设置替换的图片。
1 | h1 { |
- :focus
为可以获取焦点的元素设置获取焦点后的样式。
1 | input:focus { |
- !important
1 | p { |
规则color: red
胜出。
值得一提的是IE不支持!important
规则,故而可以用来区分IE和非IE浏览器。
- 提示框
1 | <a class="tips" href="#">https://google.com/<span>提示文本</span></a> |
1 | a.tips { |
- 固定header位置
将header
标签固定在页面顶部
1 | body{ margin:0;padding:100px 0 0 0;} |
- 浏览器兼容
1 | /* IE6 and below */ |
- 容器水平和垂直居中
1 | <div> |
1 | div { |
- 阴影
text-shadow
box-shadow
外阴影:
1 | div { |
内阴影:
1 | div { |
- 取消IE文本框滚动条
1 | textarea { overflow: auto; } |
- 图片预加载
纯css预加载:
1 | body:after { |