CSS设计指南-笔记

阅读CSS设计指南前5章节时所做的笔记,有些为摘录书本中的原句,有些为自己的想法,如果有什么错误的地方还请大家指教。

一、为文档添加样式的4种方法
1.行内样式:写在特定HTML标签的style属性里。

<p style="font-size:12px; color:red">行内样式</p>

2.嵌入样式:放在HTML文档的head元素中。

<head>
    <style>
        P { color:blue }
        h1 { font-size:16px }
</style>
</head>

3.链接样式:把样式集中在一个单独的.css样式表文件中。可以在任意HTML页面中链接。

<link  style=”text/css”  href=”style.css”  rel=”stylesheet” />

4.@import 指令 :必须出现在上面三种样式表之前,否则不会被加载
@import url(css/styles.css)

二、CSS结构

CSS基本结构由选择符和声明两部分组成
CSS基本结构

对基本结构的三种扩展方法:

1.多个声明包含在一条规则中,以";-分号"隔开

p { color:red ; font-size:12px ; font-weight:bold; }

2.多个选择符组合在一起,组合符之间以”逗号,”隔开

h1, h2, h3 { color:red ; font-weight:bold ;}

3.多条规则用于同一个选择符。

h1, h2, h3 { color:red ; font-weight:bold; }
h3 { font-style:italic; }

三、CSS选择符
1.后代组合式选择符 :一组以空格分隔的标签名。用于选择作为指定祖先元素后
代的标签。

<body>
    <article>
          <p> article的后代</p> 
 </article>
<p>其他p标签</p>
</body>
article  p{color : red;}      //只应用于article里面p标签
  1. 特殊的后代组合式选择符:
<section>
    <h2>An H2 Heading</h2>
<p>This is paragraph 1</p>
<p>Paragraph 2 has <a href="#">a link</a> in it.</p>
<a href="#">Link</a>
</section>

(1). 子选择符 >

section > h2 { font-style:italic; }      

此例中,section是h2的爸爸,只能是父子,而不能是爷孙或其他祖先的关系

(2). 紧邻兄弟选择符 +

h2 + p { font-variant:small-caps; }

此例中,p为紧跟在h2后面的兄弟元素

(3). 一般兄弟选择符 ~

h2 + a { color:red; }

此例中,a为h2后面的兄弟元素,不要求紧跟,但是不能在h2前面的兄弟元素

(4). 通用选择符 *

*{color:green}

此例中,页面中所有元素(文本和边框)均变成绿色

section * a{color:yellow}

此例中,选中任何是section的孙子元素的a标签,a的父元素是谁没关系

  1. 类选择符和ID选择符:
<h1 class="specialtext featured">This is a heading with the <span>same class</span>as the second paragraph.</h1>
<p id=”paragraphid”>This tag has no class.</p>
<p class="specialtext"> When a tag has a class attribute, you can target it<span>regardless</span> of its position in the hierarchy.</p>

(1). 类选择符 .类名{}

.specialtext{color:red;}                    //选择specialtext所有元素
p.specialtext{font-style:italic;}           //只选择specialtext 类的p标签
.specialtext.featured{font-size:120%;}      //只选择同时具有pecialtext和featured类的标签

(2). ID选择符 #ID (在选择符上与类的用法几乎一致)

#paragraphid {color:red;}                   //选择ID为paragraphid的一个元素
  1. 属性选择符:
    (1). 属性名选择符
[title] {color:red;}                        // 选择带有title属性的所有标签
img[title] {border:2px solid blue;}            选择带有title属性的所有img标签

(2). 属性值选择符 (属性名选择符的更进一步 属性名跟属性值均要符合常用于表单元素input)

img[title="red flower"] {border:4px solid green;}

四、伪类(单个冒号)

  1. UI伪类:UI 伪类会基于特定 HTML 元素的状态应用样式。
    (1). 链接伪类
a:link{color:black;}                           //等待点击
a:visited{color:gray;}                        //此前点击过这个链接
a:hover{color:red; text-decoration:none;}         //鼠标指针悬停在链接上
a:active{color:pink;}                         //正在被点击(鼠标按下还没释放时的状态)

(2). :focus 伪类
表单中通过点击获得焦点时的样式设定

input:focus { border: 1px  solid  red }

(3). :target伪类
点击链接时对同一页面中的跳转目标元素设定样式

<a href=”#target”>To Target Element</a>
<p id=”target”>I am  Target Element</p>
#target:focus{background:red;}                  //点击a链接,会给p标签加上红色背景

(4). 结构化伪类

:first-child    :last-child    :nth-child(n)        //n为一个数值,也可以使用odd  even 

五、伪元素(两个冒号)
(1).

::first-letter          //选中第一个字母

(2).

::first-line            //选中段落第一行

(3).

e::before   e::after   // 在特定元素前面或后面添加特殊内容    注意是元素内容后面而不是元素后面插入一个伪元素(伪元素被包含)

六、常见CSS选择器列表:


CSS选择器列表

七、样式来源
 浏览器默认样式表
 用户样式表
 作者链接样式表
 作者嵌入样式
 作者行内样式

八、层叠规则

  1. 层叠规则1:找到应用给每个元素和属性的所有声明

  2. 层叠规则2:按照顺序和权重排序

  3. 层叠规则3:按特指度排序

  4. 层叠规则4:顺序决定权重

  5. 计算特指度 I-C-E ( ID-Class- Element)
    选择符中有一个ID , 就在I的位置上加1
    选择符中有一个Class , 就在C的位置上加1
    选择符中有一个元素名,就在E的位置上加1

p                           0-0-1 特指度=1
p.largetext                     0-1-1 特指度=11
p#largetext                     1-0-1 特指度=101
body p#largetext                1-0-2 特指度=102
body p#largetext ul.mylist      1-1-3 特指度=113
body p#largetext ul.mylist li       1-1-4 特指度=114

九、盒子模型

  1. 盒模型属性
    边框(border) 内边距(padding) 外边距(margin)
    以上三个属性各有4个方向:上 右 下 左(设置简写时按这个顺序,如果那个值没写就用对边的值)

  2. 盒子边框属性
    宽度(border-width)
    样式(border-style)
    颜色(border-color)
    圆角角度(border-radius)

  3. 叠加垂直外边距

<p>the first paragraph<p>
<p>the second paragraph<p>
p { height:50px ; border:1px solid red; background-color:#333 ; margin-top:50px ; margin-bottom:30px ;}

以上两个p标签相邻边距为50px 而非(50px+30px),在垂直间距上会叠加边距,取绝于较大的数值水平外边距则没有这个叠加效果。

  1. 盒子宽度
    (1). 没有设置宽度的盒子
    没有设置width的元素始终会扩展到填满其父元素的宽度。添加水平边框、内边距和外边距会导致内容宽度减小,减小量为border-width ,padding ,margin的和。
    (2). 设置宽度的盒子
    设定了宽度的盒子添加水平边框、内边距和外边距会导致盒子扩展得更宽。实际上之前设置的盒子width属性只是盒子内容去的宽度,而非盒子要占据的水平宽度。

十、浮动与清除
浮动元素脱离常规文档流后,紧跟其后的元素在空间允许的情况下,向上提升到与浮动元素平起平坐。如果浮动元素后面有两个元素,而只想让第一个元素与浮动元素并列(就算旁边还能放下第二个元素,也不想让他上来),可以用clear属性来清除第二个元素。当块元素的高度是默认或者auto时,如果元素包含浮动元素,那么浮动元素不参与高度计算。

原始界面

对img添加float:left 后的界面

使用以下三种方法后的界面
  1. 围住浮动元素的三种方法
    (1). 对父元素(容器元素)使用overflow:hidden
    Overflow真正的用途是防止容器元素被超大内容撑大,容器元素保持设定宽度,超大子元素内容会被容器剪切掉。其还有另一个作用就是迫使容器元素包围其浮动的子元素。

(2). 同时浮动父元素(容器元素)
浮动容器元素,不管其子元素是否浮动,都会被包围起来。同时还要对容器元素的下一个兄弟元素应用clear:left,强制兄弟元素待在容器元素下方。

(3). 在父元素内容的末尾添加非浮动元素,可以直接在标记中加,也可以通过给父元素添加 clearfix 类来加(当然,样式表中得需要相应的 clearfix:after 规则)

.clearfix:after {
        content: ”.” ;
        display:block;
        height:0;
        visibility:hidden;
        clear:both;        }            //确保伪元素高度为0,不可见

十一、定位
position 属性有 4 个值: static、 relative、 absolute、fixed,默认值为 static

<p> First  paragraph </p>
<p>Second  paragraph </p>
<p id=”specialpara”> Third  paragraph (with ID) </p>
<p> Fourth  paragraph </p>

1.相对定位
相对定位相对的是它再原文档流的位置(默认位置),然后通过top、right、bottom、left属性来改变位置
p#specialpara { position:relative; top:25px; left:30px;}
这个元素相对原始位置移动了位置,页面其他没发生变化,也就是说这个元素原来占据的空间没动,其他元素也没有移动

相对定位

2.绝对定位
绝对定位会把元素彻底从文档流中拿出来,相对于元素最近的已定位的祖先元素(即是设置了绝对定位或者相对定位的祖先元素)。如果元素没有已定位的祖先元素,那么它的位置则是相对于最初的包含块(body),使用绝对定位后元素的display(非none情况)会变成inline-block
p#specialpara { position:absoult; top:25px; left:30px;}

绝对定位

十二、文字版式
CSS中的行高平均分布在一行文本的上方和下方。如果字体大小是12px,行高是20px,则浏览器会在文本上方和下方各加4px的 ,以凑足20px的行高。

十三、页面布局
多栏布局三种基本实现方案:固定宽度,流动和弹性

  1. 布局高度
    多数情况下不居中结构化元素的高度是不必设定的,这样元素才能随自己包含内容的增加而在垂直方向上扩展。

  2. 布局宽度
    我们需要更精细地控制布局宽度,但是不要给包含在其中的内容元素设定宽度,应该让这些内容元素自动扩展到填满栏的宽度。

  3. 三栏-固定宽度布局
    问题:为有宽度的浮动栏设定水平外边距,内边距,增加栏间距,添加栏外边距,在栏中添加大图片或者没空格的场字符串可能会导致栏宽超过布局宽度,从而使右边的浮动栏没有足够的空间与其他栏并列而滑到左边栏下方。
    解决方法:
    (1). 从设定的元素宽度中减去添加的水平外边距、边框和内边距的宽度和。(需每次调整,不理想)
    (2). 给栏添加一个没宽度的div,让它包含所有内容元素后给div应用边框和内边距等。
    (3). 使用CSS3的box-sizing属性后,给section添加边框和内边距都不会增大盒子,相反会导致内容变窄。

  4. 三栏-中栏流动布局

  5. 多栏布局


    多栏布局

第七章实践


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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,747评论 1 92
  • 1.CSS基本概念 1.1 CSS的定义 CSS(Cascading Style Sheets)层叠样式表,主要用...
    寥寥十一阅读 1,827评论 0 6
  • 转载请声明 原文链接地址 关注公众号获取更多资讯 第一部分 HTML 第一章 职业规划和前景 职业方向规划定位...
    程序员poetry阅读 16,535评论 32 459
  • CSS学习感言: CSS明显比HTML复杂一些,用的时间也多,而且也还有许多迷惑的地方,特别是关于定位和浮动,理解...
    雨夜月风阅读 436评论 0 1
  • display: none; 与 visibility: hidden; 的区别 联系:它们都能让元素不可见 区别...
    纹小艾阅读 1,446评论 0 1