-css3一些新选择器(d)

由于css特性太多,所以与其企图知道所有的css特性,不如让自己知道可以用什么css实现什么更好。

一、多列布局columns

css多列布局规范描述了如何通过多列显示文本(即,如果不用这个属性的话,文本一般都是一大块,而用了这个可以给将文本设置为小块小块的)。下面是常用的5个属性:


column-width:<length> | auto 设置或检索对象每列的宽度 
.column-count:<integer> | auto 设置或检索对象的列数
.column-gap:<length> | normal 设置或检索对象的列与列之间的间隙
column-rule:[ column-rule-width ] || [ column-rule-style ] || [ column-rule-color ]设置每一栏之间的边框,即两个栏中间的那个线。复合属性。相当于border属性
column-span:none | all 设置或检索对象元素是否横跨所有列。
columns	规定设置 column-width 和 column-count 的简写属性。

二、在css中创建分支

这里要用到一个@supports,即特性检测,但是这个的浏览器支持还不怎么多

  • @supports: 它充许我们可以根据浏览器对CSS特性的支持情况来定义不同的样式.
/* 表示在浏览器支持display:flex的情况下才用下面样式 */
@supports (display: flex) {
  div { display: flex; }
}
/* 并且还可以判断多个情况,用and和or。and表示,如果几个都支持则用下面代码,or表示只要支持其中一个就可以用下面代码 */
@supports ((transition-property: color) or (animation-name: foo)) and (transform: rotate(10deg)) {
  // ...
}

三、新css3选择符

1、属性选择器

新的css3属性选择符把属性的值当作一个字符串来选择,如下:

/* 以什么开头 */
img[alt^="file"] 选择以file这个字符串开头的alt元素
/* 包含... */
img[alt*="value"] /* 选择包含value这个值的alt元素 */
/* 以什么结尾 */
img[alt$="value"] /* 选择以value结尾的alt元素 */

2、另一些选择器选择器

  • (1)>子元素选择器:选择元素的直接的目标子元素,不是选择所有的子元素
main>div {background: red;}
  <main>
    <p class='i'>1</p>
    <div>2</div> // red
    <div>3</div> // red
  </main>
  • (2)+选择器:相邻兄弟选择器。选择有相同父元素的,后面紧接着的那个兄弟元素(选择后面的那一个)。
.i + div {background: red;}
  <main>
    <p class='i'>1</p>
    <div>2</div> // red
    <div>3</div>
  </main>

  • (3)~同级兄弟选择器:选择指定元素后面所有的同级兄弟目标元素
// 比如,hover第二个p,则3、4个p颜色变黄
.father p:hover~p {
    background: yellow;
}


<div class="father">
<p>1</p>
<div id="a1">fudong1111111111111111111111</div>
<p>2</p>
<p>3</p>
<p>4</p>
</div>

3、伪类选择器

  • :first-child和:last-child : 匹配属于其父元素的第一个或者最后一个子元素。这个伪类实际上为一个筛选作用,筛选的范围为调用这个伪类的选择器。如下:
  • :nth-child(n): 选择器匹配属于其父元素的第 N 个子元素,不论元素的类型。
    n 可以是数字、关键词或公式。odd为奇数,even为偶数。如下:
  • :nth-last-child(n): 这个和nth-child差不多,不过是从dom的另外一头开始的。
  • :nth-of-type(): 匹配属于父元素的特定类型的第 N 个子元素的每个元素.
    n 可以是数字、关键词或公式。要区分类型。n从1开始
  • :nth-last-of-type: 从dom的另一头开始的。
  • :not(selector): 表示选择除了里面元素之外的其他元素
  • :empty: 匹配没有子元素(包括文本节点)的每个元素。
  • :first-line: 用于选取指定选择器的首行
<body>
<h1>这是标题</h1>
<p class="what">第一个段落。</p>
<p>第二个段落。</p>
<p>第三个段落。</p>
<p>第四个段落。</p>
</body>

.what:first-child { /* 不会匹配元素。因为,首先选择的为.what元素,即,是在.what这个范围内在进行筛选出:first元素 */
    background:#ff0000;
}

p:last-child { /* 选择第4个段落 */
    background:#ff0000;
}

p:nth-child(2) /* 选择第一个段落 */
{
background:#ff0000;
}

p:nth-child(odd) /* 选择第二个段落,第4个段落 */
{
background:#ff0000;
}

p:nth-child(2n+1) /* n依次取0,1,2....。选择第二个段落,第4个段落 */
{
background:#ff0000;
}

p:nth-of-type(1) /* 选择第一个段落 */
{
background:#ff0000;
}

p:not(.what) { /* 选择二、三、四个段落 */
    background:#ff0000;
}

四、css自定义属性和变量

自定义属性可以存储信息,然后这些信息可以在样式表的其他地方使用。自定义属性以两个短划线开头,接着是自定义属性的名字。

:root { /* 这里用root伪类把自定义属性保存在根元素上 */
    --MainFont: Arial, sans-serif;
}

.Title { /* 这里用var()调用自定义属性 */
    font-family: var(--MainFont);
}

猜你喜欢

转载自blog.csdn.net/rocktanga/article/details/120733803