PC网站CSS分享
最后更新于:2022-04-02 06:11:59
2016年之前的前端开发主要还是以PC端为主,移动端做的比较少。
这里想总结些编写网页的经验,以PC端的为主,前面总结过后台的,今天写些前台的,参考了[bootstrap3.3.5](http://www.bootcss.com/)、[bootstrip2.3.2](http://v2.bootcss.com/index.html)和模版[matrix](http://matrix.pwstrick.com/)。
前段时间还写过一篇[《前端基础学习分享》](http://www.cnblogs.com/strick/p/4377213.html),比较基础的文章。
每次写CSS,总感觉不用写那么多CSS,但是精简的时候, 又难以下手。越写越觉得代码越来越多,越来越乱,所以这次我打算整理出一套比较灵活的结构,供以后使用。
CSS应该也可以像其他那些语言写的有层次,有结构。
## 一、规划
1. 在拿到psd效果图后,我会将所有的效果图看一遍,然后开始打草稿,在纸上画,在PS中标注都可以。一般都是做个大概的统计,太详细不太现实,既费时间也费精力。
2. 网站的浏览器兼容性要顾及到哪些,IE6,IE7还是IE8以上等,[点击查看浏览器分布情况](http://gs.statcounter.com/)。写CSS的时候还得照顾下低版本的浏览器。
3. 页面中的字体大小有几种;颜色有几种;超链接的:visit,:hover,:visit样式有几种
4. 网站中有多少个小图标,是否可以用现有的字体库替代小图片
5. 网站中是否用到了表格table,有哪几种表格款式,能否做出抽象
6. 有几种按钮款式,扁平的、3D的还是啥样的
7. 写些通用点的宽度与位移类,要能与其他地方配合,例如表单,文本等
8. 表单中是横排的还是竖排的;输入框是怎么样的;下拉框单选框多选框又是啥样的,有些高逼格的网站无法忍受下拉框等的默认样式,那就得美化;颜色有几种
9. 需要哪些辅助类,比如情境背景色等
10. 网站可以抽象出许多可复用的组建,例如分页、错误页面等
11. CSS也可以有面向对象的思维,将通用的结构抽象出来,做成一个基类。
12. 开发的时候将CSS手册打开,一些周边的在线网站准备好,例如[CSS参考手册](http://css.doyoe.com/),[webkit css library - 属性速查](http://ued.ctrip.com/blog/wp-content/webkitcss/quicksearch.html),[CSS3样式生成器](http://www.css88.com/tool/css3Preview/)等。
## 二、低版本浏览器支持
以IE6、IE7为代表的一些低版本的浏览器很多CSS3、HTML5都不支持,有些伪类也不支持,例如:before等。这个时候就要做些兼容的操作。
**1)modernizr.js**
“[Modernizr](http://modernizr.com/)”是一个用来检测浏览器功能支持情况的 JavaScript 库。 目前,通过检验浏览器对一系列测试的处理情况,Modernizr 可以检测18项 CSS3 功能以及40多项关于HTML5 的功能。可自定义脚本下载。使用了这个插件后,在html标签中会显示class,如下图所示,如果不支持某个CSS3,就会以“no-”开头。这样做的 话,就能优雅降级,在不支持这种样式的时候,换成另外一种样式。
:-: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/dd/d0/ddd0df2726298b062a5f3b11f2373537_864x70.png)
**2)respond.js**
“[Respond.js](https://github.com/scottjehl/Respond)”是一个快速、轻量的 polyfill,用于为 IE6-8 以及其它不支持 CSS3 Media Queries 的浏览器提供媒体查询的 min-width 和 max-width 特性,实现响应式网页设计。
## 三、基本的CSS设置
**1)CSS的reset**
重新默认样式,这个肯定有必要。参考了[HTML5 Boilerplate](http://www.bootcss.com/p/html5boilerplate/)。模版里的CSS注释是洋文的,自己翻译了一些。
~~~css
/**
* HTML5标签 在IE 8 / 9没有定义。
* 在IE 10/11 Firefox 中没有定义`details` or `summary`
* 在IE 11中没有定义main
*/
article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary {
display: block;
}
figure,menu{
margin:0;
padding:0;
}
ul,ol{
padding:0;
list-style-type:none;
}
h1,h2,h3,h4,h5,h6,p,ul,ol,form,dl,dt,dd,li{
margin:0;
}
.......
~~~
**2)CSS的通用样式**
1. 左浮动,有浮动,清浮动;左对齐,右对齐,居中;字体粗细,加粗,斜体,普通等;宋体、雅黑字体等
2. position定位,相对定位,绝对定位等;display属性,block、inline、inline-block等
3. overflow属性,有hidden、scrolldeng;zoom属性;cursor属性;text-decoration属性
4. margin的四个方向;padding的四个方向
~~~css
.l{float:left;}.r{float:right;}.cb{clear:both;}
.n{font-weight:normal; font-style:normal;}.b{font-weight:bold;}.i{font-style:italic;}
.fa{font-family:Arial;}.fg{font-family:Georgia;}.ft{font-family:Tahoma;}.fl{font-family:Lucida Console;}.fs{font-family:'宋体';}.fw{font-family:'微软雅黑';}.fe{font-family:'serif';}
.tc{text-align:center;}.tr{text-align:right;}.tl{text-align:left;}
.rel{position:relative;}.abs{position:absolute;}.fixed{position:fixed;}
.db{display:block;}.dib{-moz-inline-stack:inline-block; display:inline-block;}.di{display:inline;}.dn{display:none;}
.ovh{overflow:hidden;}.ovs{overflow:scroll;}.vh{visibility:hidden;}.vv{visibility:visible;}
.z{_zoom:1;}.zoom1{*zoom:1;}
.mt5{margin-top: 5px;}.mt10{margin-top: 10px;}.mt15{margin-top: 15px;}.mt20{margin-top: 20px;}
.mr5{margin-right: 5px;}.mr10{margin-right: 10px;}.mr15{margin-right: 15px;}.mr20{margin-right: 20px;}
.mb5{margin-bottom: 5px;}.mb10{margin-bottom: 10px;}.mb15{margin-bottom: 15px;}.mb20{margin-bottom: 20px;}
.ml5{margin-left: 5px;}.ml10{margin-left: 10px;}.ml15{margin-left: 15px;}.ml20{margin-left: 20px;}
.pt5{padding-top: 5px;}.pt10{padding-top: 10px;}.pt15{padding-top: 15px;}.pt20{padding-top: 20px;}
.pr5{padding-right: 5px;}.pr10{padding-right: 10px;}.pr15{padding-right: 15px;}.pr20{padding-right: 20px;}
.pb5{padding-bottom: 5px;}.pb10{padding-bottom: 10px;}.pb15{padding-bottom: 15px;}.pb20{padding-bottom: 20px;}
.pl5{padding-left: 5px;}.pl10{padding-left: 10px;}.pl15{padding-left: 15px;}.pl20{padding-left: 20px;}
.cursor-pointer{cursor:pointer;}
.line-del{text-decoration:line-through;}
~~~
**3)工具样式**
1. 清除浮动
2. 强制换行
3. 两边对齐等样式
4. 单选框复选框文字对齐
5. 截断文本,多出的文字显示...
6. 小三角显示
~~~css
.input_align{vertical-align:-3px;}/*单选框复选框文字对齐*/
.interception{white-space:nowrap; text-overflow:ellipsis; -o-text-overflow:ellipsis; overflow:hidden;}/*多出的显示...*/
.br{word-wrap:break-word;word-break:break-all}/*强制换行*/
.same_height{margin-bottom:-3000px; padding-bottom:3000px}/*两边齐平*/
.fix{*zoom:1;}
.fix:after,.fix:before{display:block; content:"clear"; height:0; clear:both; overflow:hidden; visibility:hidden;}/*清浮动*/
.min_fix{overflow:hidden;_zoom:1}
/**
* 小三角
* 纯色的就用一个,如果不是纯色的就用两个重叠再绝对定位
*/
span[class^="triangle-"]{
content: '';
height: 0;
width: 0;
position: absolute;
pointer-events: none;
}
.triangle-top{
border: solid transparent;
border-width: 10px;/*宽度自定义*/
border-top-color: #821134;/*四个方向 需要显示那个位置的就设置*/
}
~~~
**4)视网膜屏幕(Retina)**
现在的手机,或苹果电脑等,屏幕都是Retina屏的,高清分辨率,就要做单独处理了。下面的属性参考了[bootstrap](http://v3.bootcss.com/css/)。
~~~css
@media
only screen and (-webkit-min-device-pixel-ratio: 2),
only screen and ( min--moz-device-pixel-ratio: 2),
only screen and ( -o-min-device-pixel-ratio: 2/1),
only screen and ( min-device-pixel-ratio: 2),
only screen and ( min-resolution: 192dpi),
only screen and ( min-resolution: 2dppx) {
.css{
/*background-image: url(img_2x.png);*/
}
}
~~~
**5)移动端CSS**
这里简单的介绍下移动端的开发。在这篇[《移动web资源整理》](http://www.cnblogs.com/PeunZhang/archive/2015/03/03/3407453.html)的文章中有更多详细的说明,我里面的代码也是参照这篇文章修改的。
~~~html
~~~
## 四、字体ICON
**1)自定义字体**
1. 以前的icon基本都是用图片sprite技术,现在有了自定义字体,在高版本的浏览器中可以替代图片了。这里我选用了[Font-Awesome](https://fortawesome.github.io/Font-Awesome/icons/),有400多个图标可以选择。
2. 下载后,稍微修改下那个CSS。第二个样式使用了属性选择符,这样的话只要是“fa-”开头的就是会显示字体。
3. 可以直接引用字体库的CSS,也可以按需引用,写到自己的CSS文档中。
4. 这里顺便介绍下[Simple Icons](http://www.bootcss.com/p/simple-icons/),收集众多网站的Logo,并提供高质量、不同尺寸的png格式图片给广大网友。里面是图片,不是字体。
~~~css
@font-face {
font-family: 'FontAwesome';
src: url('../fonts/fontawesome-webfont.eot?v=4.3.0');
src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');
font-weight: normal;
font-style: normal;
}
.fa, i[class^="fa-"]{
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
transform: translate(0, 0);
}
~~~
**2)h1--h6标签**
这里参考了[bootstrap](http://v3.bootcss.com/css/)中对这几个标签的重置,设置标题、副标题等可以用到,不然老是用p标签加字体大小,页面中的标签就太不丰富啦。
~~~css
h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6 {
font-family: inherit;
font-weight: 500;
line-height: 1.1;
color: inherit;
}
h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,
.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,
h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,
.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small {
font-weight: normal;
line-height: 1;
color: #777;
}
h1,.h1,h2,.h2,h3,.h3 {
margin-top: 20px;
margin-bottom: 10px;
}
h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,
h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small {
font-size: 65%;
}
h4,.h4,h5,.h5,h6,.h6 {
margin-top: 10px;
margin-bottom: 10px;
}
h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,
h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small {
font-size: 75%;
}
h1,.h1 {font-size: 36px;}
h2,.h2 {font-size: 30px;}
h3,.h3 {font-size: 24px;}
h4,.h4 {font-size: 18px;}
h5,.h5 {font-size: 14px;}
h6,.h6 {font-size: 12px;}
~~~
## 五、表格
网站中或多或少会用到些表格结构,关于表格的一些属性,我在文章[《关于table的一些记录》](http://www.cnblogs.com/strick/p/3789114.html)中做过记录。
实际应用中的表格是多种多样的,绝不是[bootstrip](http://v3.bootcss.com/css/)模版中的几个样式所能摆平的,但模版中的思路可以借鉴,将样式抽象出来做到复用。
在CSS中单独开辟一段专门给表格的样式区域。
**1)加.table样式**
1. 表格内的单元格是居中,居左还是居右可根据实际情况来定。
2. 准备了三个对齐类.tr、.tc和.tl
:-: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/f5/31/f531777de2322abecd50e70cddfac634_781x169.png)
**2)条纹状网格.table-striped**
1. 这里是依赖:nth-child CSS 选择器实现的,这样就会有兼容性的问题,IE8浏览器及以下的都不支持
2. 但可以写的普通点,就是在偶数或单数的tr上面单独加样式
:-: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/4c/c1/4cc172fc4afe7f9369174dd6813befc8_760x156.png)
**3)带边框的表格.table-bordered**
1. 就是给td、th加上border属性。
2. 注意标题下面的border是2像素,这些都可以找到相应的代码自定义。
:-: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/49/f7/49f76333843efe5dd550705d33df68f8_785x173.png)
**4)鼠标悬停.table-hover**
1. 就是给tr加个:hover
:-: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/3c/6d/3c6d7b7719bd54b87991fe8e2cb9881d_767x152.png)
**5)颜色状态**
1. 有时候要给标题栏或内容栏给定不同的颜色,这里做了几个示例颜色
2. 实际情况可能就是几种完全不同的颜色
:-: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/71/dc/71dc6aa198a9eda1e04817967fd1cbcc_785x227.png)
根据实际情况可以组合运用
也可以自定义自己实际项目中的样式,组合也行,单独使用也行
## 六、按钮
1. 这里还是参照[bootstrip](http://v3.bootcss.com/css/)的按钮做demo。
2. 如果模版中没有合适的,可以点击[Buttons](http://www.bootcss.com/p/buttons/)网站,一个开源的按钮CSS样式库,款式众多,也可自定义,总有一款适合你吧。
3. 有三种标签可以做成按钮,\、\
';