css工作原理

Normalize.css

Normalize.css
是一种CSS reset的替代方案。它在默认的HTML元素样式上提供了跨浏览器的高度一致性。相比于传统的CSS reset,Normalize.css是一种现代的、为HTML5准备的优质替代方案。

html

html 标签

知乎总结的html tags
html一共有114个标签,但html5有添加了一些标签,如nav、header、article、section、aside、footer等。

闭合标签

闭合标签的基本格式如下:
<标签名>文本内容</标签名>

可以给这个标签添加一些属性,比如:

<标签名 属性_1="属性值" 属性_2="属性值">文本内容</标签名>

标题、段落等文本元素都要求闭合标签,也就是要有一个开标签和一个闭标签,比如:

<h2>Words by Dogsworth</h2> 
<p>I wandered lonely as a dog.</p>

引用内容用自闭合标签

<标签名 属性_1="属性值" 属性_n="属性值" />

非文本内容是通过自闭合标签显示的。闭合标签与自闭合标签的区别在于,闭合标签包含的是会显示的实际内容,而自闭合标签只是给浏览器提供一个对要显示内容的引用。
<标签名 属性_1="属性值" 属性_n="属性值" />

<img src="images/cisco.jpg" alt="My dog Cisco">

块级元素和行内元素

** 块级元素盒子会扩展到与父元素同宽**

块级标签

<h1>-<h6>:6级标签,<h1>表示最重要
<p>:段落
<ol>:有序列表
<li>:列表项
<blockquote>:独立引用

行内元素盒子会“收缩包裹”其内容,并且会尽可能包紧。

行内标签:

<a>:链接(anchor,锚)
<img>:图片
<em>:斜体
<strong>:重要
<abbr>:简写
<cite>:引证
<q>:文本内引用

css

  1. 行内样式
  2. 嵌入样式
  3. 链接样式
<!-- 行内样式 -->
<p>This paragraph simply takes on the browser's default paragraph style.</p>
<p style="font-size: 12px; font-weight:bold; font-style:italic; color:red;">By adding inline CSS styling to this paragraph, you override the default styles.</p>

<!-- 嵌入样式 -->
<head>
      <style type="text/css">
        h1 {font-size:16px;}
    
        p {color:blue;}
    
      </style>
    </head>
<!--链接样式 -->
<link href="styles.css" rel="stylesheet" type="text/css" />
css样式

CSS规则分两部分,即选择符和声明。声明又由两部分组成,即属性和值。声明包含在一对花括号内。
图中文字:selector:选择符;declaration:声明;property:属性;value:值;opening curly bracket:左花括号;closing curly bracket:右花括号。

对这个基本的结构,有三种方法可以进行扩展。

第一种方法:多个声明包含在一条规则里。

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

这样,一条规则就可以把段落文本设置成红色,12像素大,粗体。

第二种方法:多个选择符组合在一起。如果想让h1、h2和h3的文本都变成蓝色,粗体,可以这样分别写:

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

但其实,把三个选择符组合在一起也可以,这样就能减少重复输入:

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

千万注意每个选择符之间要用逗号分隔(最后一个后面不用加)。

第三种方法:多条规则应用给一个选择符。 假设,你在写完前面那条规则后,又想只把h3变成斜体,那可以再为h3写一条规则:

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

选择符分类

用于选择特定元素的选择符又分三种。

  1. 上下文选择符。基于祖先或同胞元素选择一个元素。
  2. ID和类选择符。基于id和class属性的值(你自己设定)选择元素。
  3. 属性选择符。基于属性的有无和特征选择元素。
上下文选择符

上下文选择符的格式如下:

标签1 标签2 {声明}

上下文选择符,严格来讲(也就是CSS规范里),叫后代组合式选择符(descendant combinator selector),就是一组以空格分隔的标签名。用于选择作为指定祖先元素后代的标签。

article p {font-weight:bold;}

这个例子中的上下文选择符表明,只有是article后代的p元素才会应用后面的样式。换句话说,上面这条规则的目标是位于article上下文中的p元素。

特殊的上下文选择符
  • 子选择符>
    标签1 > 标签2

    标签2必须是标签1的子元素,或者反过来说,标签1必须是标签2的父元素。与常规的上下文选择符不同, 这个选择符中的标签1不能是标签2的父元素之外的其他祖先元素。

    section > h2 {font-style:italic;}

  • 紧邻同胞选择符+
    标签1 + 标签2
    标签2必须紧跟在其同胞标签1的后面。

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

  • 一般同胞选择符~
    标签1 ~ 标签2

    标签2必须跟(不一定紧跟)在其同胞标签1后面。

    h2 ~ a {color:red;}

  • 通用选择符*

    通用选择符*(常被称为星号选择符)是一个通配符,它匹配任何元素,因此下面这条规则

    * {color:green;} 会导致所有元素(的文本和边框)都变成绿色。不过,一般在使用*选择符时,都会同时使用另一个选择符。p * {color:red;}

ID和类选择符
类属性
<h1 class="specialtext">This is a heading with the <span>same class</span> 
as the second paragraph.</h1> 
<p>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>

<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8" /> 
<title>Stylin' with CSS - Figure 2.15 The Class Attribute</title>
<style>
p {font-family: helvetica, sans-serif;}
.specialtext {font-style:italic;color: blue;}
/* CSS between script tags in the page head */
</style>

</head>

<body>
    <h1 class="specialtext">This is a heading with the <span>same class</span> as the second paragraph.</h1>
    <p>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>
      
</body>

</html>

css class style 显示效果

css class sytle

多类选择符

<p class="specialtext featured">Here the span tag <span>may or may not</span> be styled.</p>

.specialtext .featured {font-size:120%;}
多个类名,如这里的specialtext和featured,放在同一对引号里,用空格分隔。实际上,更准确的说法,就应该是HTML的class属性可以有多个空格分隔的值。要选择同时存在这两个类名的元素,可以这样写:

ID属性

ID与类的写法相似,而且表示ID选择符的#(井号)的用法,也跟表示类选择符的.(句号)类似。

如果有一个段落像下面这样设定了ID属性

<p id="specialtext">This is the special text.</p>

那么,相应的ID选择符就是这样的:
#specialtext {CSS样式声明}

ID和类的小结
  1. 什么时候使用ID:ID的用途是在页面中唯一地标识一个元素。
  2. 什么时候使用类:类的目的是为了标识一组具有相同特征的元素。

ID的用途是在页面标记中唯一地标识一个特定的元素。它能够为我们编写CSS规则提供必要的上下文,排除无关的标记,而只选择该上下文中的标签。

相对来说,类是可以应用给任意多个页面中的任意多个HTML元素的公共标识符,以便我们为这些元素应用相同的CSS样式。而且,使用类也让为不同标签名的元素应用相同的样式成为可能。

层叠优先级

规则一:包含ID的选择符胜过包含类的选择符,包含类的选择符胜过包含标签名的选择符。

规则二:如果几个不同来源都为同一个标签的同一个属性定义了样式,行内样式胜过嵌入样式,嵌入样式胜过链接样式。在链接的样式表中,具有相同特指度的样式,后声明的胜过先声明的。

规则三:设定的样式胜过继承的样式,此时不用考虑特指度(即显式设定优先)。

样例思考

display:

1、块级标签转换为行内标签:display:inline;

2、行内标签转换为块级标签:display:block;

3、转换为行内块标签:display:inline-block

css display
/*style.css source  */
@font-face {
  font-family: 'lakeshore';
  src: url('fonts/LAKESHOR-webfont.eot');
  src: url('fonts/LAKESHOR-webfont.eot?#iefix') format('embedded-opentype'),
       url('fonts/LAKESHOR-webfont.woff') format('woff'),
       url('fonts/LAKESHOR-webfont.ttf') format('truetype'),
       url('fonts/LAKESHOR-webfont.svg#lakeshore') format('svg');
  font-weight: normal;
  font-style: normal;
}

body {
  font-size: 40.5%;
  background: 'white';
  /* background-color: #0f0; */
}

a[href='#'] {
  /* 添加到文本的修饰 */
  text-decoration: blink;
}

.logo-text {
  background: white;
  text-align: center;
  text-transform: lowercase;
  /* font-family: lakeshore; */
  font-size: 5em;
}

.thumbnail-list {
  /* padding: 10; */
  list-style: none;
  padding: 0;
  white-space: nowrap;
  /*auto 如果溢出框,则应该提供滚动机制。 */
  overflow-x:  auto;
}

.thumbnail-item + .thumbnail-item {
  margin-top: 3em;
}

.thumbnail-item {
  /* display: block; */
  display: inline-block;
  /* width: 200px; */
  width: 300px;
  border: 2px solid rgb(100%, 50%, 100%);
  border: 1px solid rgba(100%, 100%, 100%, 0.8);
}

.thumbnail-image {
  display: block;
  width: 100%;
}

.thumbnail-title {
  display: block;
  margin: 0;
  padding: 0.5em 1em;
  background: rgb(96, 125, 120);
  color: rgb(202, 238, 255);
  font-family: sans-serif;
  font-size:3em;
}
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>ottergram</title>
    <link rel="stylesheet" href="stylesheets/styles.css">
  </head>
  <body>
    <header>
      <h1 class="logo-text">ottergram</h1>
    </header>
    <ul class="thumbnail-list">
      <li class="thumbnail-item">
        <a href="#">
          <img class="thumbnail-image" src="img/otter1.jpg" alt="Barry the Otter">
          <span class="thumbnail-title">Barry</span>
          <!-- <span class="thumbnail-title">Barry1b</span> -->
        </a>
      </li>
      <li class="thumbnail-item">
        <a href="#">
          <img class="thumbnail-image" src="img/otter2.jpg" alt="Robin the Otter">
          <span class="thumbnail-title">Robin</span>
        </a>
      </li>
      <li class="thumbnail-item">
        <a href="#">
          <img class="thumbnail-image" src="img/otter3.jpg" alt="Maurice the Otter">
          <span class="thumbnail-title">Maurice</span>
        </a>
      </li>
      <li class="thumbnail-item">
        <a href="#">
          <img class="thumbnail-image" src="img/otter4.jpg" alt="Lesley the Otter">
          <span class="thumbnail-title">Lesley</span>
        </a>
      </li>
      <li class="thumbnail-item">
        <a href="#">
          <img class="thumbnail-image" src="img/otter5.jpg" alt="Barbara the Otter">
          <span class="thumbnail-title">Barbara</span>
        </a>
      </li>
    </ul>
  </body>
</html>

通过对上面css的分析,我们可以初步理解class样式的设置以及对display属性的理解。

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

推荐阅读更多精彩内容

  • 文档流 文档流,就是HTML元素会按照它们各自在标记中出现的先后顺序,依次从页面上方“流向”下方。 元素 显示元素...
    stylever阅读 1,793评论 0 51
  • 《CSS设计指南(第3版)》的笔记整理。 【HTML基础】非文本内容是通过自闭合标签显示的。闭合标签与自闭合标签的...
    xpwei阅读 494评论 0 2
  • 前端必读:浏览器内部工作原理[https://kb.cnblogs.com/page/129756/] 作者: T...
    我是强强阅读 1,162评论 0 2
  • css 工作原理每个html元素都有一组样式属性,可以通过css来设定。当html元素的同一个样式属性有多种样式值...
    __越过山丘__阅读 245评论 0 1
  • 1. 介绍 浏览器可能是最广泛使用的软件。本书将介绍浏览器的工作原理。我们将看到,当你在地址栏中输入google....
    康斌阅读 2,040评论 7 18