CSS Mstery-notes
更新日期:
文章目录
意义的重要
- 与表现性相比,有意义的页面更容易处理。搜索代码,找到引用元素。
- 程序和其他设备理解有意义的标记
ID用于标识页面上特定的元素,以及持久的结构性元素,后一次性元素。
类适合标识内容的类型或其他相似的条目。
为元素命名
应该根据 '他们是什么' 来为元素命名,而不应该根据 '他们的外观如何' 来命名. 可以让代码更有意义, 并且避免代码与设计不同步.
css 应用样式
外链式
1 2
<style type="text/css"> </style>
内部导入, 比链接慢
1
@import url(/css/layout.css);
使用结构良好的单一CSS文件可以显著提高下载速度.
盒子模型
它指定元素如何显示以及如何相互交互.页面上每个元素都被看作一个矩形框,这个框由元素的内容 内边距 边框 和 外边框组成
全局 reset
1 | *{ maring: 0; padding: 0;}
|
css3 的 box-sizing
属性可以定义要使用哪种盒模型.
外边距叠加
当两个或者更多个垂直外边距相遇时, 它们将形成一个外边距, 这个外边距的高度等于两个发生叠加的外边距的高度的较大者.
只有普通文档流中的盒子的垂直外边距才会发生外边距叠加. 行内框 浮动框 或绝对定位框不会发生
文本元素会被当作匿名框, 用:first-line
选中
1 2 3 4 | <div> some text <p>some test</p> </div> |
清理
1 2 3 4 5 6 7 8 9 10 11 12 13 | .clear:after { content: "."; height: 0; visibility: hidden; display: block; clear:both; } /* IE hack */ .clear {display: inline-block;} /*针对ie6*/ * html .clear {height: 1%;} .clear {display: block;} /*另一种方法*/ .clear{overflow:hidden; _zoom:1;} /* or */ .clear{overflow:auto; _height: 1%;} |
ie6 透明
需要单独存放一个文件, 使用时用条件注释
1 2 3 4 | div { filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/img/xx.png',sizingMethod='crop'); background: none; } |
或者使用 .htc
文件, 在ie6专用样式表中引用它。
1 2 3 | img, div{ behavior: url(iepngfix.htc); } |
图像相关
1 2 3 | a:link, a:visited { background: url(/img/button.png) left top no-repeat;} a:hover, a:focus {background-image: url(/img/button-over.png);} a:active {background-image: url(/img/button-active.png);} |
ie 背景缓存
1 2 3 | html { filter: expression(document.execCommand("BackgroundImageCache", false, true)); } |
布局
css 框架试图通过在标记和表现之间建立强耦合来简化css布局。
- 使开发人员不得不使用表现性的标记
- 设计中必须使用特定的网格结构
布局技术的根本是3个基本概念: 定位 浮动 和 外边距操纵
- 固定宽度布局, 尺寸使用固定像素
- 流式布局, 尺寸使用百分比. 比如设计者使用 960 像素, 那么使用百分数就是
960/1250
- 弹性布局, 相对于字号设置大小. 大多数默认字号是16像素, 10像素大约是16像素的62.5%.
1 2 3
body { font-size: 62.5%; text-align: center;} .wrapper{width: 92em;} /*里面仍然用百分比*/
tips
ie6中的width
更像是 min-width
1 | <a href="" rel="prev"></a> |
1 2 3 | ol.pagination a[rel="prev"], ol.pagination a[rel="next"] {border: none;} ol.pagination a[rel="prev"]:before { content: "\00AB";} ol.pagination a[rel="next"]:before { content: "\00BB";} |
双倍边距解决 display: inline;
表单标签 label
1 2 3 4 5 6 | <!-- 方式一 --> <lable> email <input name="email" type="text"/> </lable> <!-- 方式二 --> <label for="email"> email <em class="required">(required)</em> </label> <input name="email" type="text"/> |
1 2 3 4 5 6 | input[type='text'], textrea { border-top: 2px solid #999; border-left: 2px solid #999; border-bottom: 1px solid #999; border-right: 1px solid #999; } |
提交按钮
1 2 3 4 5 | <div> <button type="submit"> <img src="/img/xx"/> </button> </div> |
1 | text-overflow: ellipsis; |
input 标签
1 | <input type="text" autocomplete="off" autofocus spellcheck='true' required/> |
appand
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | box-sizing: content-box|border-box; display: box; box-flex: 1; // 改变元素显示位置 box-ordinal-group: 3; // 排列方向 box-orient: vertical; box-align: start | center | end; // hrizontal | vertical out-line: thin solid red; out-offset: ; |