打印

[讨论] [近期话题]如何合理的规划站点的CSS样式表

发表下我平时的做法

发表下我平时的做法,请高手们多多指教。呵呵....

我通常是先把相关css的东东全部放在一个皮肤文件夹(通常命名skin_taber)

然后分三个样式文件
1、公共+头部+底部
2、首页样式
3、其他的内页样式

个人觉得目前这样做还蛮清楚的,多多指教!
我一般都是用一个CSS,然后写的时候把结构放在一起写,字体颜色链接的放一起,具体的内容又分块,每块用注释来标明,一般用英文,中文的有时候会涉及到编码出错问题。呵呵,小网站,CSS体积也上不了20K,所以写在一起还是觉得好点。
党宝博客
我也习惯在CSS里加注释,一般都是先写好页面结构,在写CSS
我的global.css
复制内容到剪贴板
代码:
@charset "utf-8";
/*xiongsongsong 2008年5月8日20:24:43*/
/*
    全局(global)
-----------------------------------------------
*/
body{width:1003px;text-align:center;margin:0 auto;font-size:small;font-family:Arial, Helvetica, sans-serif;position:relative;}
h1,h2,h3,h4,h5,h6,ul,ol,form,p,dl,dd,dt{margin:0;padding:0;font-size:100%;font-weight:normal;}
.clear_both{clear:both;}.display_none{display:none;}
ul,ol{list-style:none;}
a{text-decoration:none;}
a img{border:none;}
.fl{float:left;}.fr{float:right;}.tr{text-align:right;}.tl{text-align:left;}
/*
    顶部区域-导航(top area - navigation)
----------------------------------------------
*/
#nav{width:100%;float:left;position:relative;background:#000 url(../images/global/style_bg.gif) 98% 40% no-repeat;height:198px;color:#fff;text-transform:uppercase; border-top:solid 18px #000;}
    #nav h2{background:url(../images/global/alex.gif) center center no-repeat;width:427px;height:122px;text-indent:-9999px;margin:0 auto;padding-top:19px;}
    #nav span.the,#nav span.issue,#nav span.path,#nav p,#nav span.date,#nav ul{position:absolute;}
    #nav span.the,#nav span.issue{text-indent:-9999em;background-image:url(../images/global/issue_the.gif);background-repeat:no-repeat;width:100px;height:12px;display:block;overflow:hidden;}
    #nav span.the{right:-8px;top:60px;background-position:left -12px;}
    #nav span.issue{right:-27px;top:102px;background-position:left top;}
    #nav p{top:140px;font-weight:bold;}
    #nav span.path,#nav span.date{background-image:url(../images/global/top_l_r.png);background-repeat:no-repeat;width:173px;height:18px;display:block;text-indent:-9999px;}
    #nav span.path{left:3px;}
    #nav span.date{right:3px; background-position:left bottom;}
    #nav p{left:24%;padding-top:3px;background:url(../images/global/long_text.gif) left center no-repeat;width:533px;height:15px;text-indent:-9999px;}
    #nav ul{bottom:0;left:0;width:100%;border:solid 4px #fff;border-left:none;border-right:none;height:26px;line-height:26px;font-size:90%;overflow:hidden;background:#fff;}
        #nav ul li{float:left;width:141px;margin-right:2px;}
            #nav ul li a{display:block;width:100%;height:26px;background:#000 url(../images/global/nav_bg.gif) left top no-repeat;text-indent:-9999px;}
                /*单独定义每个栏目的颜色*/
                #nav ul li#nav_home a{background-position:left top;}
                #nav ul li#nav_magazine a{background-position:-143px top}
                #nav ul li#nav_shoes a{background-position:-286px top;}
                #nav ul li#nav_nyc a{background-position:-430px top;}
                #nav ul li#nav_living a{background-position:-573px top;}
                #nav ul li#nav_entertainment a{background-position:-716px top;}
                #nav ul li#nav_green a{background-position:-859px top;}
                #nav ul li#nav_flash{margin-right:0;}#nav ul li#nav_flash a{background-position:-1002px top;width:145px;}
                /*定义鼠标以上的背景替换*/
                #nav ul li#nav_home a:hover,#nav ul li#nav_home.current_tag a{background-position:left bottom;}
                #nav ul li#nav_magazine a:hover,#nav ul li#nav_magazine.current_tag a{background-position:-143px bottom}
                #nav ul li#nav_shoes a:hover,#nav ul li#nav_shoes.current_tag a{background-position:-286px bottom;}
                #nav ul li#nav_nyc a:hover,#nav ul li#nav_nyc.current_tag a{background-position:-430px bottom;}
                #nav ul li#nav_living a:hover,#nav ul li#nav_living.current_tag a{background-position:-573px bottom;}
                #nav ul li#nav_entertainment a:hover,#nav ul li#nav_entertainment.current_tag a{background-position:-716px bottom;}
                #nav ul li#nav_green a:hover,#nav ul li#nav_green.current_tag a{background-position:-859px bottom;}
                #nav ul li#nav_flash{margin-right:0;}#nav ul li#nav_flash a:hover,#nav ul li#nav_flash.current_tag a{background-position:-1002px bottom;width:145px;}
/*
    版权(copyright)
--------------------------------------------
*/
#copyright{width:100%;float:left;clear:both;}
    #copyright ul{height:32px;background:#000;text-transform:uppercase;width:100%;font-size:85%;font-weight:bold;letter-spacing:1px;}
        #copyright ul li{float:left;margin:10px 20px 0 12px;display:inline;}
            #copyright ul li a{color:#fff;}
    #copyright p{font-size:80%;text-align:left;color:#545354;padding:5px 0 0 0;font-family:"Times New Roman", Times, serif;}
我的layout.css
复制内容到剪贴板
代码:
@charset "utf-8";
/*
    xiongsongsong 2008年5月10日9:59:33--------------*/
/*
    定义布局 definition of the layout
---------------------------------------
*/
#main{width:100%;float:left;clear:both;position:relative;}
    #menu,#ad{position:absolute;top:0;}
    #menu{width:139px;left:0;border-right:solid 3px #000;background:#000;}
    #content{width:700px;float:left;margin-left:142px;z-index:0;position:relative;min-height:604px;display:inline;}
    #ad{height:604px;right:0;top:0;width:159px;background:#fff;border-left:solid 2px #fff;}#ad a{display:block;}
        body #main h3{position:absolute;left:0;top:0;width:282px;height:33px;background-position:left top;background-repeat:no-repeat;z-index:2;text-indent:-9999px;}
        body #main h3.go_green{background-image:url(../images/global/left_menu_green.png);}
        body #main h3.shop{background-image:url(../images/global/left_menu_shop.png);}
        body #main h3.living{background-image:url(../images/global/left_menu_living.png);}
        body #main h3.flash{background-image:url(../images/global/left_menu_flash.png);}
        body #main h3.magazine{background-image:url(../images/global/left_menu_magazine.png);}
/*
    左侧菜单 Menu
---------------------------------------
*/
    #menu ul{width:100%;float:left;clear:both;margin-top:50px;}
        #menu ul li{height:24px;width:139px;background-repeat:no-repeat;border-bottom:solid 3px #000;text-indent:-9999px;background-position:left bottom;}
        /*各种样式的左侧菜单 */
        #go_green li,#go_green li a{background-image:url(../images/global/left_menu_green.png);}
        #shop_list li,#shop_list li a{background-image:url(../images/global/left_menu_shop.png);}
        #nyc_list li,#nyc_list li a{background-image:url(../images/global/left_menu_nyc.png);}
        #living_list li,#living_list li a{background-image:url(../images/global/left_menu_living.png);}
        #flash_list li,#flash_list li a{background-image:url(../images/global/left_menu_flash.png);}
        #magazine_list li,#magazine_list li a{background-image:url(../images/global/left_menu_magazine.png);}
            /*背景有规律的增长*/
            #menu ul li#nav_one a{background-position:left -33px;}#menu ul li#nav_one a:hover,#menu ul li#nav_one.current_tag a{background-position:145px -33px;}
            #menu ul li#nav_two a{background-position:left -57px;}#menu ul li#nav_two a:hover,#menu ul li#nav_two.current_tag a{background-position:145px -57px;}
            #menu ul li#nav_three a{background-position:left -81px;}#menu ul li#nav_three a:hover,#menu ul li#nav_three.current_tag a{background-position:145px -81px;}
            #menu ul li#nav_four a{background-position:left -105px;}#menu ul li#nav_four a:hover,#menu ul li#nav_four.current_tag a{background-position:145px -105px;}
            #menu ul li#nav_five a{background-position:left -129px;}#menu ul li#nav_five a:hover,#menu ul li#nav_five.current_tag a{background-position:145px -129px;}
            #menu ul li#nav_six a{background-position:left -153px;}#menu ul li#nav_six a:hover,#menu ul li#nav_six.current_tag a{background-position:145px -153px;}
            #menu ul li#nav_seven a{background-position:left -177px;}#menu ul li#nav_seven a:hover,#menu ul li#nav_seven.current_tag a{background-position:145px -177px;}
            #menu ul li#nav_eight a{background-position:left -201px;}#menu ul li#nav_eight a:hover,#menu ul li#nav_eight.current_tag a{background-position:145px -201px;}
            #menu ul li a{width:100%;height:24px;display:block;overflow:hidden;}
    #menu a.ad{margin:10px 0 0 10px;float:left;padding-bottom:8px;}
/*
    右侧广告 Ad
---------------------------------------
*/
    #ad span.ad_info{position:absolute;bottom:0;left:0;display:block;background:#fff;width:100%;font-size:80%;text-align:right;font-family:"Times New Roman", Times, serif;color:#494748;}
    #ad img{display:block;width:158px;height:595px;background:#007073;}
不往后看

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
我刚刚开始团队开发项目,也拿出来讲一下我写CSS样式表的习惯:

在做项目之前一般也是规化网站,看网站大小而定。
比如说一个网站有三四个版块的中型网站,我的制作方案是:
所有版块共享的样式表有:
font.css这个是所有的网页共用的文字样式表,一是统一风格,二是不用再重复定义。
form.css每个版块里都有对表单的一些定义,所以也提取出来了。

然后就是在不同的版块里进行剥离了。为每个版块提取共用块
publicdiv.css是每个版块的布局
在这个版块里一般有header,content,footer当然这个里面是什么还要以自己的网站的内容来定
然后就是为不同的页面布局定义不同的布局样式了。
这样样式在链接的时候会很清楚了,修改起来也是很方便的。这里提醒一下,我在为样式起名字一般会起成这样
content1,content2,content3这样的
或者用left,middle,right
content1-left,content1-middle,这样起名字就算以后内容发生了变化,一看布局也能很快理解自己的样式命名了。
其实写样式一定要注意以后还要修改,注释当然不能少了!扩展性,通用性都是很重要的。
做真实的自己

TOP

抱着最忠实的学习态度看了大家的方法,体会较深的就是:不重复,不累赘,精简还要容易识别,还有些没看清楚
<吾>爱唯一</舞>

TOP

最近公司的一个项目就遇到了这样的问题,一个网页游戏项目,由于前期的CSS规划没有做好,导致目前CSS文件十分混乱,修改起来很复杂。看完了各位高手的意见很有启发。下次再做项目时候一定要提前的规划好!

TOP

呵呵,忍不住讲几句。只讲困难,不讲解决方案哈:

困难一:通用的尴尬
通用样式的好处,在于样式的重用,在于一改全改不会漏掉。但反过来,若是导航样式有变动,你整个站大大小小的页面都得重新测试一遍。当网站有上百上千个不同的页面时,通用样式就会跟水泥地基一样,一点不敢动。

困难二:样式和结构分离的尴尬
坦率的说,除非XSL大规模流行,否则样式绝对依赖结构。我是不相信什么样式表可以完全独立的修改。只改样式不改结构,要么造成样式的冗余,要么就是结构的冗余。
然而,样式表一般掌握在前端工程师手中,HTML一般掌握在软件工程师手中。你想改个样式,就必须去说服工程师陪你一起改。所以往往不是技术上的困难,而是协作上的困难,导致花费时间大大超出工作量。

困难三:团队化协作
样式表要是一个人写,OK的。若是10个人在写呢?每个人的水平还不一致,对网页标准的理解也不相同。如何能写出不冲突的样式表,是个问题。

困难四:连接数重要,还是流量重要?
连接数少,那每一个文件就肯定大,而且会有浪费的流量。反过来要是将样式细分,用多少load多少,自然流量小,但连接数一大堆。

困难五:重写样式的危险
通用样式表里定义了很多样式,可在具体的上下文环境中不一定完全适合。那就在具体的地方将其重写覆盖咯。问题是,东一个重写西一个重写,当通用样式表需要改的时候,所有重写的地方也都需要修改,工作量巨大无比。

总之呢,PV几百和PV几百万的网站的样式表的写法,是有很大不同的。我很少看到大型网站的CSS管理方面的心得。而事实上,我也看到几乎所有的大型网站的CSS,多少都有点一团糟。
小麦的自习教室:mikkolee.com

TOP

其实就是一个css文件和样式命名的问题了,每个人都有自己的书写习惯,如果可以标准化了,那么就可以事半功倍了。
下面是我收藏的CSS命名规则,供大家参考:

一.文件命名规范

全局样式:global.css;

框架布局:layout.css;

字体样式:font.css;

链接样式:link.css;

打印样式:print.css;

主要的 master.css

专栏 columns.css

主题 themes.css

主要的 master.css

模块 module.css

基本共用 base.css

表单 forms.css

补丁 mend.css

二.页面结构

容 器: container

页 头:header

内 容:content

页面主体:main

页 尾:footer

栏目:column

页面外围控制整体布局宽度:wrapper

左右中:left right center

三.导航

导航:nav

主导航:mainbav

子导航:subnav

顶导航:topnav

边导航:sidebar

左导航:leftsidebar

右导航:rightsidebar

菜单:menu

子菜单:submenu

摘要: summary

四.功能

标志:logo

广告:banner

登陆:login

登录条:loginbar

注册:regsiter

搜索:search

功能区:shop

标题:title

加入:joinus

状态:status

按钮:btn

滚动:scroll

标签页:tab

文章列表:list

提示信息:msg

当前的: current

小技巧:tips

图标: icon

注释:note

指南:guild

服务:service

热点:hot

新闻:news

下载:download

投票:vote

合作伙伴:partner

友情链接:link

版权:copyright



Container div
#container
容器

Layout
#layout
布局

Header or banner div
#head, #header
页头部分

Footer div
#foot, #footer
页脚部分

Navigation list
#nav
主导航

Sub-navigation list
#subNav
二级导航

Menu
#menu
菜单

Sub Menu
#submenu
子菜单

Left or right side columns
#sidebar_a, #sidebar_b
左边栏或右边栏

Main div
#main
页面主体

Tag
#tag
标签

Message
#msg #message
提示信息

Tips
#tips
小技巧

Vote
#vote
投票

Friend Link
#friendlink
友情连接

Title
#title
标题

Summary
#summary
摘要

Search input
#searchInput
搜索输入框

Search output
#search_output
搜索输出和搜索结果相似

Search
#search
搜索

Search bar
#searchBar
搜索条

Search results
#search_results
搜索结果

Copyright information
#copyright
版权信息

brand
#branding
商标

branding-logo
#logo
LOGO

Site information
#siteinfo
网站信息

Copyright information etc.
#siteinfoLegal
法律声明

Designer or other credits
#siteinfoCredits
信誉

Join us
#joinus
加入我们

Partnership opportunities
#partner
合作伙伴

Services
#service
服务

Regsiter
#regsiter
注册

Arrow
arr/arrow
箭头

Little
#little
标题

Website map
#sitemap
网站地图

List
#list
列表

Home page
#homepage
首页

Sub page
subpage
二级页面子页面

Toolbar
#tool, #toolbar
工具条

Next pulls
#drop
下拉

Next pulls menu
#dorpmenu
下拉菜单

Status
#status
状态

Container div
#container
容器

Header or banner div
#header
页头部分

Main or global navigation div
#mainNav
主导航

Menu
#menu
菜单

Sub Menu
#submenu
子菜单

Left or right side columns
#sidebarA, #sidebarB
左边栏或右边栏

Main div
#main
页面主体

Content div
#content
内容部分

The main content area
#contentMain
主要内容区域

Footer div
#footer
页脚部分

Tag
#tag
标签

Message
#msg #message
提示信息

Tips
#tips
小技巧

Vote
#vote
投票

Friend Link
#friendlink
友情连接

Title
#title
标题

Summary
#summary
摘要

Sub-navigation list
#subNav
二级导航

Search input
#searchInput
搜索输入框

Search output
#searchOutput
搜索输出和搜索结果相似

Search
#search
搜索

Search results
#searchResults
搜索结果

Copyright information
#copyright
版权信息

brand
#branding
商标

branding-logo
#brandingLogo
LOGO

Site information
#siteinfo
网站信息

Copyright information etc.
#siteinfoLegal
法律声明

Designer or other credits
#siteinfoCredits
信誉

Join us
#joinus
加入我们

Partnership opportunities
#partner
合作伙伴

Services
#service
服务

Regsiter
#regsiter
注册

Status
#status
状态

Products
.products
产品

Products prices
.productsPrices
产品价格

Products description
.productsDescription
产品描述

Products review
.productsReview
产品评论

Editor's review
.editorReview
编辑评论

New release
.newsRelease
最新产品

Publisher
.publisher
生产商

Screen shot
.screenshot
缩略图

FAQ
.faqs
常见问题

Keyword
.keyword
关键词

Blog
.blog
博客

Forum
.forum
论坛

TOP

最近做网站的一点愚见:

能够不用margin和padding的地方尽量不要用,如果纯粹只是为了占位,举个例子,一个如下的inline形式的图片列表(假定我们需要宽度是600px):
<ul style="width:600px;">
       <li><img /></li>
       <li><img /></li>
       <li><img /></li>
       <li><img /></li>
</ul>

对于这样的列表,想要使每个图片之间有一定的间距:第一个想到的是margin,第二个想到的是padding。


可以考虑一下别的实现方:

 提示:您可以先修改部分代码再运行
通过li的宽度来实现占位,如果觉得两边的占位与中间的图片之间的间距不合适,可以通过调节ul的宽度来调整,经过简单的计算就能得到。

好像说的有点和主题不相干,那就言归正传,之所以这样,考虑到盒模形有时候会带来一些不可预料的问题,如border,margin,padding,在不同的浏览器里就会有不一样的效果,那么如果能尽可能少的使用它们,我们就可以少写很多hack,很多hack写的时候还能明白,但到了维护的时候,自己有时也会先一头雾水,所以能免则免。这样对于整个CSS文件的规划也是很有帮助的!

TOP

Golive的样式表管理器就能帮助很好的维护,可以在CSS中建立“文件夹”来将样式分组,还可以高亮显示指定样式在页面中的所有应用位置。
可惜就是停止开发了~

TOP

没用缩进的朋友请不要在这喊代码混乱

#main_top{
       padding:6px 4px;
}
       #main_top span{
              margin-right:16px;
       }
              $main_top span strong{
                     color:#800080;
              }

       #main p{
              margin-left:10px;
       }
#main_cont{
       padding:6px;
       background:#fff8f8;
}
为什么你们要把上面的这种书写格式的CSS代码变成这样呢:
    address,em{font-style:normal;font-weight:normal;}
    address{border-left:5px solid #CCC; padding-left:8px; margin:5px 0;}
    caption{font-weight:bold; text-align:left;}

当我看到这样的代码的时候,给我的第一感觉就是:我该怎么找到样式名字和样式属性?我连大括号和分号都看不见了,一大篇,密密码码的,就像是一堆乱码,一堆需要你一个属性一个属性修改的乱码,恶心。难道说你们当初在制作的时候也是这样写的吗?真搞不懂你们这些人的思想,为了什么?为了节约那几个字节(你会说几十几百,甚至上千字节的缩进)?还是为了显示你专业?还是为了让人不利于修改(就这条最符合)?
我用过的WP皮肤,好几款国外的,别个CSS都是竖向列表,改的时候非常方便,一目了然,不像国内的那些皮肤样式,全是横向的,一团糟,真不知道你们这样作是为了什么?
说倒底,你们的无法管理,完全就是因为所谓上面这原因引起的,你们可否试过用竖向列表来显示?加上缩进(我至今仍未感觉到由于缩进引起的加载速度问题),怎么可能说是代码混乱?
/*头部CSS代码
    /*LOGO部份
        /*横向菜单
/*整个主体样式
/*左边列表样式
    /*左边列表的一个小块样式
        /*左边列表的一个小块中的一个登陆表单样式(如果你觉得这表单样式复杂,你可以单独处理)
        /*左边的UL样式
            /*UL样式中的图片和LI样式
        /*左边的DL样式
            /*左边的DT样式
                /*左边的DD样式
            /*左边的DT样式
                /*左边的DD样式
/*中间文章显示部份
    /*中间文章标题
    /*中间文章内容
    /*内容底部信息
/*底部样式

如果按照缩进,你要修改哪一部份,只需要根据结构中的CLASS/ID名来找到所在位置,其下的子部份代码也就出来了,会混乱吗?而且因为缩近,你一看就知道这部份的代码到哪结束,下部份的代码从哪开始。至于一些超级大站(我不知道有多大,也不知道你们会说多大),如果所有页面的CSS不能共用(或是不允许共用),你却将所有页面的CSS放在一个CSS文件中,那你还不如下位算了,会有人比你利于管理CSS样式表的。

至于注释,呵呵,居然说到引到速度和文件的大小等等上面去了,第一次听说。没人叫你每句代码都注释好不好?那是教程。

小弟不是专业的,SO,如果觉得上面的话不和谐,该怎么着就怎么着吧。但是有一点我是比你们都清楚的:从学写代码(basic)开始,一直到现在,我都记得非常清楚的一句话就是:缩进,让你的代码结构更加易于阅读,几乎是所有编程语言在书的最开始部份都会提到的。——你如果说CSS缩进和编程语言不同,饿,不好意思,小弟对CSS尚未入门,正在学习。
看别人不顺眼,是自己修养不够

TOP

说到缩进,其实如果你要用缩进,就得写很长的路径,假设:
<div class="raino1">
  <div class="raino2">
     <div class="raino3">
     </div>
  </div>
</div>

要写成缩进就得这样:
.raino1{}
  .raino1 .raino2{}
     .raino1 .raino2 .raino3{}
因为这样写才能体现缩进的意思,即:写明元素的父子关系,但这样如果层级一多就不好操作了。。。而一般而言,我们更愿意这样写:
.raino1{}
.raino2{}
.raino3{}

TOP

回复 73# rainoxu 的帖子

缩进并不代表非要写上父子关系,因为你缩进就已经代表了父子的关系,否则的话,你缩进干嘛?

.raino1{}
  .raino1 .raino2{}
     .raino1 .raino2 .raino3{}
这个加上,是由于1、2、3的父子关系原因,你必须得加,否则你直接写成.raino3,那就控制的是所有的.raino3了,而不是.raino1下面.raino2下面的这一个.raino3。

.raino1{}
.raino2{}
.raino3{}
SO,你这个和上面缩进的那段代码,两者实现的功能是完全不一样的,除非你的这几个CLASS是唯一的,但如果这样的话,那你整个这段话都说错了。

你应该说你们习惯于这样写:
.raino1{}
.raino1 .raino2{}
.raino1 .raino2 .raino3{}

但这样套和缩没缩进有什么关系?没得关系,该套多少你还是得套。(四川话好读些)影响你CSS套多少层的是你的XHTML结构,和CSS无关,和缩进就更没关系了。总觉得和CSS有点关系,但又说不上是什么关系,唉,应该没关系吧?

这么长时间就这么一个人参与了讨论?刚才上来的时候看见无法回贴,还以为又关闭了(总觉得那段话有点不和谐),结果才想起我下午的时候清空了COOKIES。

[ 本帖最后由 sfrost 于 2008-10-7 01:29 编辑 ]
看别人不顺眼,是自己修养不够

TOP

可以学习一下css框架,根据自己网站的特点,给栏目灵活分类,css也是灵活的分类,像java一样封装,继承,接口,注释也是很重要的,研究出适合自己网站的最好管理方法

TOP

CSS的继承只能是沿着DOM树从上到下的继承,不能倒过来。。。不知道怎么表达是好,反正觉得CSS的继承方式有很大的麻烦,像一般的面向对象的程序的继承方式相对合理一点~~我经常碰到一些因为CSS继承上的问题,所以我宁可独立写成.raino1,.raino2,.raino3,如果考虑到前一楼的说法,往往会被CSS权重搞晕掉了,到时改个样式又不生效,然后才猛然想起可能是权重的问题,这样也很麻烦的。

TOP

分为三个:
1.公用的布局样式表
2.公用的字体样式表
3.各频道自己的样式表

TOP