css3新增选择器

CSS3是CSS(层叠样式表)技术的升级版本,于1999年开始制订,2001年5月23日W3C完成了CSS3的工作草案,主要包括盒子模型、列表模块、超链接方式、语言模块、背景和边框、文字特效(阴影)、多栏布局(display:flex)、2D3D和动画等模块

CSS选择器

选择器例子例子描述​****CSS
.**class.intro选择 class="intro" 的所有元素。1
#**id#firstname选择 id="firstname" 的所有元素。1
**选择所有元素。2
**elementp选择所有元素1
**element,**elementdiv,p选择元素1
element elementdiv p选择 元素1
element>elementdiv>p选择父元素为元素2
element+elementdiv+p选择紧接在元素。2
[attribute][target]选择带有 target 属性所有元素。2
[attribute=value][target=_blank]选择 target="_blank" 的所有元素。2
[attribute~=value][title~=flower]选择 title 属性包含单词 "flower" 的所有元素。 (class=”flower red”) (title= ”flower red”) 不能使用了2
[attribute|=value][class|=box]选择 class 属性值以 “box” 开头(后面如果有字符,必须为-)的所有元素。2
:link (:开头--伪类选择器)a:link选择所有未被访问的链接。1
:visiteda:visited选择所有已被访问的链接。1
:activea:active选择活动链接。1
:hovera:hover选择鼠标指针位于其上的链接。1
:focusinput:focus选择获得焦点的 input 元素。(IE8及以上才支持)2
:first-letterp:first-letter选择每个元素的首字母。1
:first-linep:first-line选择每个元素的首行。(加边框不行,字号可以)1
:first-childp:first-child选择属于父元素的第一个子元素的每个元素。2
:before (伪元素)p:before在每个元素的内容之前插入内容。2
:after(伪元素)p:after在每个元素的内容之后插入内容。2
选择器例子例子描述CSS
element1~element2p~ul选择前面有元素(同胞,可以不相邻)的每个3
[**attribute^=**value]a[href^="https"]选择其 href属性值以 "https" 开头的每个 元素。3
[**attribute$=**value]img[src$=".pdf"]选择其 src 属性以 ".pdf" 结尾的所有 元素。3
[attribute=value]img[src *="abc"]img[src *="abc"]选择其 src 属性中包含 "abc" 子串的每个 元素。3
:first-of-typep:first-of-type选择属于其父元素的首个元素的每个元素。3
:last-of-typep:last-of-type选择属于其父元素的最后元素的每个元素。3
:only-of-typep:only-of-type选择属于其父元素唯一的元素的每个元素。3
:only-childp:only-child选择属于其父元素的唯一子元素的每个元素。3
:nth-child(n)p:nth-child(2n+1)选择属于其父元素的第二个子元素的每个元素。3
:nth-last-child(n)p:nth-last-child(2)同上,从最后一个子元素开始计数。3
:nth-of-type(n)p:nth-of-type(2)选择属于其父元素第二个元素的每个元素。3
:nth-last-of-type(n)p:nth-last-of-type(2)同上,但是从最后一个子元素开始计数。3
:last-childp:last-child选择属于其父元素最后一个子元素每个元素。3

边框圆角

border-radius 表示边框圆角,通过设置元素的border-radius值,可以轻松给元素设置圆角边框,甚至实现绘制圆、半圆、四分之一的圆等各种圆角图形。

div{
    border-radius:10px;     /* 所有角都使用半径为10px的圆角 */
     border-radius:10px 5px;   /*左上,右下10px,   右上,左下5px*/
    border-radius: 5px 4px 3px 2px; /* 四个半径值分别是左上角、右上角、右下角和左下角,顺时针 */ 
}

 盒子阴影

box-shadow是css3的一个新属性,用来实现阴影效果,阴影分为内阴影和外阴影两个效果,可以通过逗号添加多个阴影效果。

语法:box-shadow: h-shadow v-shadow blur spread color inset;

h-shadow:必需的。水平阴影的位置。允许负值

v-shadow:必需的。垂直阴影的位置。允许负值

blur:可选。模糊程度

spread:可选。阴影的宽度

color:可选。阴影的颜色

inset:可选。从外层的阴影(outset)改变阴影内侧阴影

案例:伪元素翘脚阴影效果

<style>
  .box11 {
    width: 300px;
    height: 100px;
    background: #ccc;
    border-radius: 10px;
    margin: 10px auto;
  }

  /* 添加盒子内阴影 */
  .shadow {
    position: relative;
    max-width: 270px;
    box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.3),
      0px 0px 20px rgba(0, 0, 0, 0.1) inset;
  }

  /* 添加盒子下面阴影 */
  .shadow::before,
  .shadow::after {
    content: "";
    position: absolute;
    z-index: -1;
    bottom: 15px;
    left: 10px;
    width: 50%;
    height: 20%;
    box-shadow: 0 15px 10px rgba(0, 0, 0, 0.7);
    /* box-shadow: 0 20px 20px rgba(0, 0, 0, 0.3); */
    transform: rotate(-3deg);
  }

  /* 将阴影进行反转 */
  .shadow::after {
    left: auto;
    right: 10px;
    transform: rotate(3deg);
  }
</style>
<div class="box11 shadow"></div>

 文字阴影

text-shadow还没有出现时,大家在网页设计中阴影一般都是用photoshop做成图片,现在有了css3可以直接使用text-shadow属性来指定阴影。这个属性可以有两个作用,产生阴影和模糊主体。这样在不使用图片时能给文字增加质感。

语法:text-shadow: h-shadow v-shadow blur color; h-shadow:x轴偏移 v-shadow:y轴偏移 blur:模糊程度 color:模糊颜色

立体凸起效果

<style>
  .p3{
    text-shadow: -1px -1px white,1px 1px #333;
    color:#D1D1D1;
    font-weight: bold;
    background: #CCC;
  }
</style>
<p class="p3">立体凸起效果</p>

立体凹陷效果

<style>
.p4{
    text-shadow: 1px 1px white,-1px -1px #333;
    color:#D1D1D1;
    font-weight: bold;
    background: #CCC;
    font-size: 24px;
}
</style>
<p class="p4">立体凹下效果</p>

 描边效果

<style>
.p5{
    text-shadow: -1px 0 black,0 1px black,1px 0 black,0 -1px black;
    color:#ffffff;
    background: #CCC;
}
</style>
<p class="p5">描边效果</p>

 外发光效果

<style>
.p6{
  text-shadow: 0 0 0.2em #F87,0 0 0.2em #f87;
  color:#d1d1d1;
  background: #CCC;
  }
</style>
<p class="p6">外发光效果</p>

 背景图片的大小

background-size可以设定背景图像的尺寸;

语法格式: background-size: length | percentage | cover | contain;

length:该属性值是设置背景图像的宽度和高度的,第一个值是宽度,第二个值是设置高度的

percentage:该属性是以父元素的百分比来设置图片的宽度和高度的

cover:把背景图像扩展至足够大,以使背景图像完全覆盖背景区域(按照原图片的比例,扩展至足够大使图片完全覆盖整个背景区域)

content:背景图片保持原来的大小;把图像扩展至最大尺寸,以使宽度和高度 完全适应内容区域

auto:背景图片保持原来的大小;

  背景渐变

CSS3 渐变(gradients)可以让你在两个或多个指定的颜色之间显示平稳的过渡。 以前,你必须使用图像来实现这些效果。但是,通过使用 CSS3 渐变(gradients),你可以减少下载的时间和宽带的使用。此外,渐变效果的元素在放大时看起来效果更好,因为渐变(gradient)是由浏览器生成的。

CSS3 定义了两种类型的渐变(gradients): 线性渐变(Linear Gradients)- 向下/向上/向左/向右/对角方向 径向渐变(Radial Gradients)- 由它们的中心定义

参数值:

linear-gradient  线性渐变

radial-gradient  径向渐变

repeating-linear-gradient  重复的线性渐变

repeating-radial-gradient  重复的径向渐变

 径向渐变

语法:background: linear-gradient(direction[方向] / angle[角度], color-stop1[颜色], color-stop2[颜色], ...);

如果你想要在渐变的方向上做更多的控制,你可以定义一个角度,而不用预定义方向(to bottom、to top、to right、to left、to bottom right,等等)。

效果一:添加默认渐变(默认情况下从上往下渐变)

<style>
  div{
    width: 300px;
    height: 100px;
  }
  #grad {
    background: -webkit-linear-gradient(red, blue); /* Safari 5.1 - 6.0 */
    background: -o-linear-gradient(red, blue); /* Opera 11.1 - 12.0 */
    background: -moz-linear-gradient(red, blue); /* Firefox 3.6 - 15 */
    background: linear-gradient(red, blue); /* 标准的语法 */
  }
</style>
<div id='grad'></div>

 

使用角度渐变 角度是指水平线和渐变线之间的角度,逆时针方向计算。换句话说,0deg 将创建一个从下到上的渐变,90deg 将创建一个从左到右的渐变。 

但是,请注意很多浏览器(Chrome,Safari,fiefox等)的使用了旧的标准,即 0deg 将创建一个从左到右的渐变,90deg 将创建一个从下到上的渐变。换算公式 90 - x = y 其中 x 为标准角度,y为非标准角度。

<style>
  div{
    width: 300px;
    height: 100px;
  }
  #grad {
    background: -webkit-linear-gradient(180deg, red, blue); /* Safari 5.1 - 6.0 */
    background: -o-linear-gradient(180deg, red, blue); /* Opera 11.1 - 12.0 */
    background: -moz-linear-gradient(180deg, red, blue); /* Firefox 3.6 - 15 */
    background: linear-gradient(180deg, red, blue); /* 标准的语法 */
  }

</style>
<div id='grad'></div>

注意:在标准浏览器和谷歌浏览器下的不同效果 background:-webkit-linear-gradient(30deg,red ,green,blue); 和 background:linear-gradient(30deg,red ,green,blue);的效果是不一样的; 两个效果呈现互余的情况;如果想要两个效果一致,需要给正常浏览器下的效果改为 background:linear-gradient(60deg,red ,green,blue);

-webkit-和正常版本下的角度是互余关系

 背景图开始位置

background-origin背景图片从什么位置开始填充

background-origin: padding-box|border-box|content-box; padding-box 背景图像从内边距左上角开始填充(默认值) border-box 背景图像从边框左上角开始填充 content-box 背景图像从内容左上角开始填充

注意:给背景图片设置位置时,一定要添加no-repeat;并且开始的范围不能比结束的范围大

<style>
  div{
    width: 1000px;
    height: 600px;
    margin:0 auto;
    border: 20px dotted #f00; /*虚线*/
    padding:50px;
    background: url(banner.jpg) no-repeat; /* 背景 */
    background-origin: content-box; /* 按照内容进行平铺 */
  }
</style>
<div></div>

 背景图裁切

语法:background-clip: border-box|padding-box|content-box|text;

注意:如果想要使用background-clip: border-box必须先设置background-origin: border-box;不然不生效,因为background-origin默认值为padding-box

案例一:普通背景图片裁切

<style>
div{
    width: 1000px;
    height: 600px;
    margin:0 auto;
    border: 20px dotted #f00; /*虚线*/
    padding:20px;
    margin:20px;
    background: url(banner.jpg) no-repeat; /* 背景 */
    /* background-origin: border-box; */
    background-clip: content-box;
}
</style>
<div></div>

案例二:文本裁切

<style>
body{
  /* 添加整体的背景颜色 */
  background-color: #000;
}
div{
  width: 1000px;
  height: 400px;
  margin: 0 auto;
  text-align: center;
  /* font:粗细 字体大小/行高 字体样式 */
  font:bold 155px/400px "simhei";
  border: 20px solid #ccc;
  /* 必须添加背景图片,否则看不出来效果 */
  background: url("banner.png");
  color: rgba(255,0,0,0.2);
  /* 裁剪:按照文字来进行裁剪 必须添加-webkit- 兼容问题 */
  background-clip: text;
  -webkit-background-clip: text;
}
</style>
<div>
  你本来就很美
</div>

案例三:光斑效果

<style>
div{
width: 1000px;
height: 600px;
margin:0 auto;
background: 
-webkit-linear-gradient(left,
rgba(255,0,0,0),
rgba(255,0,0,1),
rgba(255,0,0,0)
);
}
</style>
<div></div>

案例四:文本裁切 + 光斑效果,实现鼠标悬浮高亮显示

<style>
  body {
    background:#000;
  }
  div {
    margin:10px auto;
    width:800px;
    height:300px;
    border:40px solid rgba(255,255,255,0.5);
    font: 900 110px/300px "simhei";
    color:rgba(255,255,255,0);
    text-align: center;
    /* 还可以不添加背景图片 */
    background: 
      linear-gradient(90deg,
        rgba(255,255,255,0) 0px,
        rgba(255,255,255,1) 100px,
        rgba(255,255,255,1) 110px,
        rgba(255,255,255,0) 120px
      ) 0px 0px no-repeat,url('../images/1.jpg');
    -webkit-background-clip: text;
    /* 过渡到鼠标悬浮的效果 */
    /* 如果鼠标悬浮离开都需要过渡,只在没有悬浮的div中添加就可以 */
    transition: 2s;
  }
  div:hover {
    /* 第一个表示光斑的过渡,第二个是背景图片的过渡 */
    background-position: 900px 0px,0 0;
  }
</style>
<body>
  <div>这个杀手不太冷</div>
</body>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值