CSS 快速学习

【快速学习让我不再思考太多,更多专注在一个 box 当中,上下文朝着正交方向前进~】

【Think small,】https://learnxinyminutes.com/docs/zh-cn/css-cn/

【do big!】http://dabblet.com/

 

 

Syntax

……………………………………………… 

Selector {

  property:value,

  ...

}

Eg

……………………………………………………

* {

 color:red; /* 选择器是 所有 ,属性是 红色文字,组合起来是 所有文字 设置为 红色 */ 

}

 

………………………………………………………………………………………………………………………………………………………………………………………………

/*
假定页面上有这样一个元素

<div class='some-class class2' id='someId' attr='value' />
*/

/* 你可以通过类名来指定它 */
.some-class { }

/* 给出所有类名 */
.some-class.class2 { }

/* 标签名 */
div { }

/* id */
#someId { }

===============================================
Selector 有种像正则表达式的语法
===============================================
/* 通过属性的值的开头指定 */
[attr^='val'] { font-size:smaller; }

/* 通过属性的值的结尾来指定 */
[attr$='ue'] { font-size:smaller; }

/* 通过属性的值的部分来指定 */
/* ~ 这个之前没见过 */ [attr~='lu'] { font-size:smaller; }
 
/* 你可以把这些全部结合起来,注意不同部分间不应该有空格,否则会改变语义 */
div.some-class[attr$='ue'] { }



===============================================
假设现在这样,
<div class="some-parent">

  <div class="class-name"></div>
  <div class="class-name"></div>
</div>
===============================================

/* 某个元素是另一个元素的直接子元素 */
div.some-parent > .class-name {}

/* 或者通过该元素的祖先元素 */
div.some-parent .class-name {}

/* 注意,去掉空格后语义就不同了。
你能说出哪里不同么? */
div.some-parent.class-name {}


===============================================

假设现在这样,
<div class="some-parent">  
	<div class="i-am-before">第一部分</div>  
	<div class="this-element">第二部分</div>
	<div class="this-element">第三部分</div>
</div>
===============================================

/* 你可以选择某元素前的【相邻】元素   */
.i-am-before + .this-element { }

/* 某元素之前的同级元素 相邻【或不相邻】 */
.i-am-any-before ~ .this-element {}


================================================
/* 伪类工具允许你基于页面的行为指定元素(而不是基于页面结构) */

/* 例如,当鼠标悬停在某个元素上时 */
:hover {}

/* 已访问过的链接*/
:visited {}

/* 未访问过的链接*/
:link {}

/* 当前焦点的input元素 */
:focus {}


/* ####################
   ## 属性
   ####################*/

选择器 {

    /* 单位 */
    width: 50%; /* 百分比 */
    font-size: 2em; /* 当前字体大小的两倍 */
    width: 200px; /* 像素 */
    font-size: 20pt; /* 点 */
    width: 5cm; /* 厘米 */
    width: 50mm; /* 毫米 */
    width: 5in; /* 英尺 */

    /* 颜色 */
    background-color: #F6E;  /* 短16位 */
    background-color: #F262E2; /* 长16位 */
    background-color: tomato; /* 颜色名称 */
    background-color: rgb(255, 255, 255); /* rgb */
    background-color: rgb(10%, 20%, 50%); /*  rgb 百分比 */
    background-color: rgba(255, 0, 0, 0.3); /*  rgb 加透明度 */

    /* 图片 */
    background-image: url(/path-to-image/image.jpg);

    /* 字体 */
    font-family: Arial;
    font-family: "Courier New"; /* 使用双引号包裹含空格的字体名称 */
    font-family: "Courier New", Trebuchet, Arial; /* 如果第一个
                             字体没找到,浏览器会使用第二个字体,一次类推 */
}


=================================
【优先级话题】
假设现在这样,
<p style='/*F*/ property:value;' class='class1 class2' attr='value'>
</p>

我自己的印象是
1.class优先 还有写在后面的优先
2.行内优先
3.更具体的优先

实际情况是这样,
1.使用 !importance 指令级别最优先 所以是E
2.行内嵌入 的比 外部的优先 (正常都写在外部的)所以是F
3.按照class优先原则 , 加上更具体原则 ,所以是 A
4.按照class优先原则,写在后面优先原则,所以是 C
5.按照class优先原则,所以是B
6.按照class优先原则,没有class了,所以是D
=================================
/*A*/
p.class1[attr='value']

/*B*/
p.class1 {}

/*C*/
p.class2 {}

/*D*/
p {}

/*E*/
p { property: value !important; }

 

posted @ 2018-04-26 13:45  chenhui7373  阅读(240)  评论(0编辑  收藏  举报