CSS简单备忘

结构、样式、行为分离

CSS的三种类型

  1. 内联样式表(inline style sheets)
<!--内联样式表,用于设置文本框的背景颜色-->
<input type="text" readonly="readonly" style="background-color: #FF00FF" />
  1. 内部样式表/内嵌样式表(embedded style sheets)
<!--内部样式表-->
<style type="text/css">
  input{
    border-color:Yellow;
    color:Red;
  }
 </style>
  1. 外部样式表(linked style sheets)
<head>
    <link rel="stylesheet" type="text/css" href="mystyle.css" />
</head>

样式表的优先级

级别从高到低:

  1. 内联样式表
  1. 内部样式表
  2. 外部样式表
  3. 浏览器默认

语法

CSS 规则由两个主要的部分构成:选择器(selector),以及一条或多条声明(declaration)。

选择器

  1. 元素选择器
/*元素选择器*/
html {color:black;}
h {color:blue;}
h2 {color:silver;}
  1. 选择器分组
    被分组的选择器就可以分享相同的声明,用逗号将需要分组的选择器分开
h1,h2,h3,h4,h5,h6 {
  color: green;
  }
  1. 后代选择器
li strong {
    font-style: italic;
    font-weight: normal;
  }
  1. id选择器
#red {color:red;}
#green {color:green;}

id 选择器和派生选择器

#sidebar p {
    font-style: italic;
    text-align: right;
    margin-top: 0.5em;
    }
  1. 类选择器
.center {text-align: center}

class 也可被用作派生选择器

.fancy td {
    color: #f60;
    background: #666;
    }
  1. 属性选择器
/*带有 title 属性的所有元素设置样式*/
[title]
{
  color:red;
}
/*title="W3School" 的所有元素设置样式*/
[title=W3School]
{
  border:5px solid blue;
}

设置表单的样式
属性选择器在为不带有 class 或 id 的表单设置样式时特别有用:

input[type="text"]
{
  width:150px;
  display:block;
  margin-bottom:10px;
  background-color:yellow;
  font-family: Verdana, Arial;
}
input[type="button"]
{
  width:120px;
  margin-left:35px;
  display:block;
  font-family: Verdana, Arial;
}
  1. 子元素选择器
h1 > strong {color:red;}

他与后代选择器的区别是只选择子元素

  1. 相邻元素选择器
    如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使用相邻兄弟选择器(Adjacent sibling selector)。
h1 + p {margin-top:50px;}

CSS盒模型

CSS盒模型示意图
标准盒子模型
盒子3D模型
#box {
  width: 70px;
  margin: 10px;
  padding: 5px;
}

值设置的方法

.test1 {
  /*四个方位设置相同的值*/
  padding: 1.5cm
  /*上下为0.5;左右为2.5*/
  padding: 0.5cm 2.5cm
  /*上=0.5 左右=1.0 下1.5*/
  padding: 0.5cm 1.0cm 1.5cm
  /*上,右,下,左*/
  padding: 0.5cm 1.0cm 1.5cm 2.0cm
}

内边距

h1 {
  padding-top: 10px;
  padding-right: 0.25em;
  padding-bottom: 2ex;
  padding-left: 20%;
  }

内边距可以设置百分比

p {padding: 10%;}

边框

元素的边框就是围绕元素内容和内边据的一条或多条线。每个边框有 3 个方面:宽度、样式,颜色

  1. 样式
a:link img {border-style: outset;}
/*定义了四种边框样式:实线上边框、点线右边框、虚线下边框和一个双线左边框*/
p.aside {border-style: solid dotted dashed double;}
  1. 宽度
    可以通过 border-width 属性为边框指定宽度。
    为边框指定宽度有两种方法:可以指定长度值,比如 2px 或 0.1em;或者使用 3 个关键字之一,它们分别是 thin 、medium(默认值) 和 thick。
p {border-style: solid; border-width: 5px;}
p {border-style: solid; border-width: 15px 5px 15px 5px;}
  1. 颜色
p {
  border-style: solid;
  border-color: blue rgb(25%,35%,45%) #909090 red;
  }

外边距

h2 {
  margin-top: 20px;
  margin-right: 30px;
  margin-bottom: 30px;
  margin-left: 20px;
  }

外边距合并

外边距合并(叠加)是一个相当简单的概念。但是,在实践中对网页进行布局时,它会造成许多混淆。
简单地说,外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。


外边距合并规则

当一个元素包含在另一个元素中时(假设没有内边距或边框把外边距分隔开),它们的上和/或下外边距也会发生合并。请看下图:


外边距合并规则2

CSS定位

标准文档流(Normal flow)
浮动(Floats)
绝对定位(Absolute positioning)

1. 标准文档流

特点
从上到下,从左到右,输出文档内容
由块级元素和行级元素组成
块级元素:从左到右撑满页面,独占一行;触碰到页面边缘,会自动换行
行级元素:能在同一行内显示,不会改变HTML文档结构

2. 浮动

这种布局的方法,所有的块级元素是顺序从上到下排列的,那么如何将块级元素从左到右排列那,使用的就是浮动。可以实现横向多列布局
特点
使用float属性,共有三个属性值:left、right、none
元素会左移,或者右移,直到触碰到浏览器的边缘为止

设置了浮动的元素,依然处于标准文档里中,占用其中的空间
如果浮动不设置宽度,则宽度依赖于内容的宽度
浮动会影响紧跟着的元素

关于清除浮动的影响问题:

  1. clear属性,对受到影响的元素设置清除浮动影响 clear:both;clear:left;clear:right;
  2. 设置{width:100%; overflow:hidden;}
    注意清除浮动

3. 绝对定位

通过设置position属性来实现。共有四个属性值可以设置:
static : 静态定位,依然处于标准文档流中
relative: 相对定位,相对于自身原有位置进行偏移,仍处于标准文档流,随即拥有偏移属性和z-index属性
absolute : 绝对定位,建立了以包含快为基准的定位,完全脱离了标准文档流,随即拥有偏移属性和z-index属性。定位的基准取决于最近的祖先已经定位的祖先元素,如果都没有定位,则相对于html进行偏移。
fixed : 固定定位

关于布局的三种最常见的方法

  1. 居中布局

wrap{ margin:0 auto;width:960px;}

  1. 左右布局
    .left{width:800px; float:left;}
    .right{widht:140px; float:right;}

CSS定位

CSS的定位属性允许对元素进行定位。

  1. CSS 定位和浮动
    CSS 为定位和浮动提供了一些属性,利用这些属性,可以建立列式布局,将布局的一部分与另一部分重叠,还可以完成多年来通常需要使用多个表格才能完成的任务。
    定位的基本思想很简单,它允许你定义元素框相对于其正常位置应该出现的位置,或者相对于父元素、另一个元素甚至浏览器窗口本身的位置。
    浮动不完全是定位,不过,它当然也不是正常流布局。我们会在后面的章节中明确浮动的含义。
    元素有块元素、行内元素之分。可以使用display属性修改框的类型
  2. CSS定位机制
    CSS 有三种基本的定位机制:普通流、浮动和绝对定位
  • 普通框都是在普通流中定位
  • 块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来
  • 行内框在一行中水平布置
  1. CSS的定位属性
    position 属性值的含义:
    static
    元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。
    relative
    元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。
    absolute
    元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。
    fixed
    元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身。
    提示:相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。
    可以通过z-index属性设置显示顺序
  2. 相对定位
    相对定位是一个非常容易掌握的概念。如果对一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。
    如果将 top 设置为 20px,那么框将在原位置顶部下面 20 像素的地方。如果 left 设置为 30 像素,那么会在元素左边创建 30 像素的空间,也就是将元素向右移动。
#box_relative {
  position: relative;
  left: 30px;
  top: 20px;
}

相对定位示意图

注意,在使用相对定位时,无论是否进行移动,元素仍然占据原来的空间。因此,移动元素会导致它覆盖其它框。

  1. 绝对定位
    设置为绝对定位的元素框从文档流完全删除,并相对于其包含块定位,包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。
    绝对定位使元素的位置与文档流无关,因此不占据空间。这一点与相对定位不同,相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。
    普通流中其它元素的布局就像绝对定位的元素不存在一样:
#box_relative {
  position: absolute;
  left: 30px;
  top: 20px;
}

关于定位的方式说明

一列布局

典型案例就是百度首页,一列居中对齐

<style>
    #main{
        width: 800px;
        height: 300px;
        margin: 0 auto;
        background: #123456;
    }
</style> 

两列布局

<style>
    .left{
        width: 20%;
        height: 500px;
        float: left;
        background: #ccc;
    }
    .right{
        width: 80%;
        height: 500px;
        float: right;
        background: #ddd;
    }
    #wrap{
        width: 800px;
        margin: 0 auto;
    }
</style> 
<body>
    <div id="wrap">
        <div class="left"></div>
        <div class="right"></div>       
    </div>
</body>

三列布局

<style>
    .left{
        width: 20%;
        height: 500px;
        float: left;
        background: #ccc;
    }
    .mid{
        width: 30%;
        height: 500px;
        float: left;
        background: #eee;
    }
    .right{
        width: 50%;
        height: 500px;
        float: right;
        background: #ddd;
    }
    #wrap{
        width: 800px;
        margin: 0 auto;
    }
</style>
    
</head>
<body>
    <div id="wrap">
        <div class="left"></div>
        <div class="mid"></div>
        <div class="right"></div>       
    </div>
</body>
<style type="text/css">
.left{ width:200px; height:600px; background:#ccc; position:absolute; left:0; top:0}
.main{ height:600px; background:#9CF;margin-left:210px;margin-right:210px;}
.right{ height:600px; width:200px; position:absolute;right:0; top:0; background:#FCC;}
</style>
</head>

<body>
    
    <div class="left">left</div>
    <div class="main">main</div>
    <div class="right">right</div>
</body>

混合布局

<style>
    #head{
        margin: 0 auto;
        width: 800px;
        height: 100px;
        background: #888;
    }
    #foot{
        margin: 0 auto;
        width: 800px;
        height: 50px;
        background: #777;
    }
    #main{
        width: 800px;
        height: 300px;
        margin: 0 auto;
        background: #123456;
        overflow:hidden;
    }

    .left{
        width: 20%;
        height: 500px;
        float: left;
        background: #ccc;
    }
    .mid{
        width: 30%;
        height: 500px;
        float: left;
        background: #eee;
    }
    .right{
        width: 50%;
        height: 500px;
        float: right;
        background: #ddd;
    }
    #wrap{
        width: 800px;
        margin: 0 auto;
    }
</style>
    
</head>
<body>
    <div id="wrap">
        <div id="head"></div>
        <div id="main">
            <div class="left"></div>
            <div class="mid"></div>
            <div class="right"></div>       
        </div>
        <div id="foot"></div>
    </div>
</body>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,635评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,628评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,971评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,986评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,006评论 6 394
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,784评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,475评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,364评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,860评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,008评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,152评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,829评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,490评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,035评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,428评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,127评论 2 356

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,754评论 1 92
  • 学习CSS的最佳网站没有之一 http://www.w3school.com.cn/tags/index.asp ...
    Amyyy_阅读 1,060评论 0 1
  • 1.CSS基本概念 1.1 CSS的定义 CSS(Cascading Style Sheets)层叠样式表,主要用...
    寥寥十一阅读 1,836评论 0 6
  • CSS基础 本文包括CSS基础知识选择器(重要!!!)继承、特殊性、层叠、重要性CSS格式化排版单位和值盒模型浮动...
    廖少少阅读 3,088评论 0 40
  • 转载请声明 原文链接地址 关注公众号获取更多资讯 第一部分 HTML 第一章 职业规划和前景 职业方向规划定位...
    程序员poetry阅读 16,558评论 32 459