Chinaunix首页 | 论坛 | 博客
  • 博客访问: 86694
  • 博文数量: 49
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 450
  • 用 户 组: 普通用户
  • 注册时间: 2016-11-28 15:27
文章分类

全部博文(49)

分类: HTML5

2016-12-28 16:00:57

Div+CSS布局入门教程(五)

四、页面制作(1)----用好border和clear

  由于找工作找房子的原因,隔了这么久才能开始写教程,心里感觉很对不起一直在关注本站的朋友,今天是找到房子的第二天,于是赶快继续写教程。

  这一节里面,主要就是想告诉大家如何使用好borderclear这两个属性。

  首先,如果你曾用过table制作网页,你就应该知道,如果要在表格中绘制一条虚线该如何做,那需要制作一个很小的图片来填充,其实我们还有更简单的办法,只要在中加入这么一段就可以了,你可以试试:
  



  大家可以再次参考手册,然后你就能明白dashed、solid、dotted...等的作用,利用它们你可以制作出许多效果来,实线、虚线、双线、阴影线等等。


  以上代码便可以实现设计草图中的banner,在css.css中加入以下样式:


#banner {
    background:url(banner.jpg) 0 30px no-repeat; /*加入背景图片*/
    width:730px; /*设定层的宽度*/
    margin:auto; /*层居中*/
    height:240px; /*设定高度*/
    border-bottom:5px solid #EFEFEF; /*画一条浅灰色实线*/
    clear:both /*清除浮动*/
}


  通过border很容易就绘制出一条实线了,并且减少了图片下载所占用的网络资源,使得页面载入速度变得更快。

  另一个要说明的就是clear:both,表示清除左、右所有的浮动,在接下来的布局中我们还会用这个属性:clear:left/right。在这里添加clear:both是由于之前的ul、li元素设置了浮动,如果不清除则会影响banner层位置的设定。


  以上是页面主体部分,我们在css.css中添加以下样式:


#pagebody {
    width:730px; /*设定宽度*/
    margin:8px auto; /*居中*/
}
#sidebar {
    width:160px; /*设定宽度*/
    text-align:left; /*文字左对齐*/
    float:left; /*浮动居左*/
    clear:left; /*不允许左侧存在浮动*/
    overflow:hidden; /*超出宽度部分隐藏*/
}
#mainbody {
    width:570px;
    text-align:left;
    float:right; /*浮动居右*/
    clear:right; /*不允许右侧存在浮动*/
    overflow:hidden
}


  为了可以查看到效果,建议在#sidebar和#mainbody中加入以下代码,预览完成后可以删除这段代码:

 程序代码
border:1px solid #E00;
height:200px


  保存预览效果,可以发现这两个层完美的浮动,在达到了我们布局的要求,而两个层的实际宽度应该160+2(border)+570+2=734px,已经超出了父层的宽度,由于clear的原因,这两个层才不会出现错位的情况,这样可以使我们布局的页面不会因为内容太长(例如图片)而导致错位。


  而之后添加的overflow:hidden则可以使内容太长(例如图片)的部份自动被隐藏。通常我们会看到一些网页在载入时,由于图片太大,导致布局被撑开,直到页面下载完成才恢复正常,通过添加overflow:hidden就可以解决这个问题。

  CSS中每一个属性运用得当,就可以解决许多问题,或许它们与你在布局的页并没有太大的关系,但是你必须知道这些属性的作用,在遇到难题的时候,可以尝试使用这些属性去解决问题。

  源文件可以再下一节中再次下载。

DIV+CSS布局入门教程(六)

DIV+CSS布局入门教程(六)--关于ID和CLASS

  这半个月以来今天是头一天在20:00左右下班,想起关于这个教程一直没有完成,心里感觉非常不踏实。两个月前刚辞职,本想把教程全部完成,但是由于一次不幸,导致硬盘中的数据大部分丢失,本写了一半的教程也随之灰飞烟灭。但最近有许多的网友通过博客、、、E-MAIL等途径与我联系,希望能继续更新这个教程,甚至有网友居然拨打我的手机(我不知道大家是如何知道我的号码的,,哎~~)被大家所感动,时间虽然很紧,但还是抽点时间来尽量完成这个教程吧~~就像鲸鱼叔叔所说的,时间就是奶,越挤就越多~~

  首先,有些东西需要说明一下。对于之前的文章,由于为了让大家更好的区分各层的关系,教程中不少地方使用了大写的CLASS或者ID,其实这样做是不推荐的,我推荐的方法是使用单词之间增加下划线,或者单词拼接的方法。因为CSS是区分大小写的。大家可以看到,我提供给大家的下载文件中全部都是使用小写来处理的。

  我们先来处理sidebar的样式,经过分析,我们可以得知,sidebar有四个部分,我们将这四个部分分为四个层:

程序代码 程序代码


    

    



    

    



    

    


  在这里我们有到ID和CLASS,那么有的朋友就要问了,究竟什么情况下用ID,什么情况下用CLASS呢?

  ID,表示的是唯一性,并且在这个页面中只会出现一次,我们用它来表示布局的结构;
  CLASS,表示一组(类)或一个具有同样性质的元素,它们可以共用样式,并且在页面中将会出现多次。

  因为会员登录、站点信息、页面标准以及这几个区域中的内容字的样式将会是一样的,所以我们将它们放在一个组里面。

  但有的时候,我们需要给这些层中的元素设置不同的样式时,我们要如何做呢?例如会员登录这几个文字使用14px加粗,其他是使用12px加粗,我们要怎么写CSS呢,看下面的代码?

程序代码 程序代码
 .bar_title {font-size:12px;font-weight:bold}
  #login .bar_title {font-size:14px}


  #login .bar_title 表示的是在ID为login的层下的CLASS为bar_title的元素的样式,这样表示的就可以有针对性的对某些元素定制样式。#login .bar_title 在单独设置了font-size:14px的样式时,同时也继承了.bar_title这一组(类)的样式,那就是font-weight:bold,加粗。

  再举一个例,这样大家就会对这部分理解更深刻了,HTML代码如下。

程序代码 程序代码

    


    


  这里,我要将title1的文字样式设置为14px,红色,将title2的文字样式为10px,绿色,title1title2都需要加粗,DIV加一个红色的1px的边框,SPAN加一个绿色的1px的边框,样式可以这样写:

程序代码 程序代码
  .title {border:1px solid #f00} /*默认为1px的红色边框*/
  span.title {border-color:#0f0}
  .title a {font-weight:bold}
  div.title a {font-size:14px;color:#f00}
  span.title a {font-size:12px;color:#0f0}


  大家可以看到,使用CLASS可以使得许多的元素可以共用同样的样式,通过元素的TagName的不同,又可以对每一个元素定制不同的样式,我想大家应该对什么时候该用ID,什么时候该用CLASS已经有了深刻的理解了吧!

  好了,这次的教程到这里,我不知道下一篇教程什么时候更新,但我会尽快的,谢谢大家的支持。

  另外,花了点时间把以前的文件又重新整理了一下,提供下载,并添加了详细的注释,大家可以通过查看文档内的注释来了解到更多的内容。



优化你的CSS代码~!

 最近看过许多网友制作的SKIN的CSS文件,发现其中有着许多冗余的代码。下面我来跟大家介绍一下,如何清除这些冗余的代码,让你的CSS文件更加简洁。

  一、margin、padding属性
  参照相关资料我们可以知道,margin和padding代表的意思分别是外部边距和内部填充距离,在许多网友的CSS中,关于这两个属性的冗余代码是出现得最多的。比如:margin:0px,大家可以查看一下自己的CSS文件中,是否许多的margin:0px,其中有的是不需要的,你可以尝试删除它,当然也并不是所有的margin:0px都没有用,相同,padding:0px也一样。

  另外,margin和padding中各项属性的顺序是:上右下左,你只要记住是顺时针方向就好了。我们再看看这两段代码:
margin:0px 0px 0px 10px;
margin-left:10px;
其实他们的作用是一样的,下面的则是一种缩写,使用缩写我们可以减少CSS代码,并使阅读起来更为方便。(padding也相同。)

  二、!important;属性
  !important是CSS1就定义的语法,作用是提高指定样式规则的应用优先权。IE是不支持这个语法的,而其他的浏览器都支持,通过这一点,我们可以得知,设置了优先权的代码是不会被IE执行的。所以我们可以important的后面添加CSS样式,使其可以区别于IE和FireFox等浏览器。

  上次在看Miles的CSS代码时,我看到了这样一句:
height:50px !important;height:50px;
  这里就是多余的了,我们可以这样写:height:50px就够了,这个错误在我刚开始制作CSS时也曾出现过。

  三、text-align、font样式
  这两个样式的作用我就不说了,但是这两个样式在许多网友的CSS中也存在许多冗余。下面我来举例说明一下,层的定义如下:


   

        
       

   

   

   


CSS文件如下(错误示例):
#main{width:500px;text-algin:left;font-size:12px;color:#000000;}
#body1{width:500px;text-algin:center;font-size:12px;color:#FF0000;}
#content{text-algin:left;font-size:12px;color:#000000;}
#body2{text-algin:left;font-size:12px;color:#000000;}


  大家可以从上面的代码中轻易地看出,有许多的冗余代码,现在我们来书写正确的代码:
#main{width:500px;text-algin:left;font-size:12px;color:#000000;}
#body1{text-algin:center;color:#FF0000;}
#content{width:300px;text-algin:left;color:#000000;}
#body2{}

  以上就是正确的代码,由于大家在制作SKIN时,对PJBLOG的DIV结构没搞清楚,才会出现这种错误。

  四、display:none的使用
  display:none的作用就是使被定义的层不显示。我们再来看看这段代码:
#blogTitle{font-size:0px;margin:10px 3px 3px 40px;height:20px;color:#FFC1E6;display:none}

  大家有没有觉得这有些多余呢,是的,既然设置了不显示,为何还要保留那些不必要的样式呢?出现这种情况我就知道,这个SKIN是改自某人的。

  五、还是margin和padding
  我还是通过例子来给大家说明,层的定义同上,以下是CSS的定义(错误示例):
#main{margin:5px 0px 5px 0px;}
#body1{margin:12px 0px 10px 0px;}
#content{margin:8px 0px 2px 0px;}
#body2{margin:10px 0px 15px 0px;}

  现在我们再来书写正确的样式:
#main{}
#body1{margin-top:17px ;}
#content{margin:8px 0px 2px 0px;}
#body2{margin:20px 0px ;}

  这里需要大家制作一下示例才能了解,首先#main{margin:5px 0px 5px 0px;}是没有必要的,他无非定义的就是整个页面的上、下外边距。(在一定场合下却需要这样书写)我们同样可以通过定义#body1的上边距和#body2的下边距来设置,所以才有了#body1{margin-top:17px ;}#body2{margin:20px 0px ;}(这里定义的是#body2的上下边距为20px,左右边距为0px,也是缩写的一种方式。)

  同样的道理,于是我们可以省略了#body1的下边距,在#content层在定义上边距,另外大家还需要先弄清楚层的嵌套关系,否则就会出错。

  好了,写到这里我也该去睡了,以上就是这些时间查看大家的CSS文件获得的经验,希望对大家书写CSS的时候有所帮助,制作出来的SKIN更加简洁、明了。

阅读(1046) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~