CSS学习笔记(十一) CSS3新特性

简介: CSS学习笔记(十一) CSS3新特性

前言


这篇文章我们将会介绍 CSS3 中一些常用的新特性

包括 选择器、过渡、动画、弹性布局、颜色、阴影、反射、渐变、字体、转换 等等


正文


1、颜色


在 CSS3 之前,表示颜色可以使用以下三种方法:


  • 关键字表示法,例如黑色可以表示为 black,白色可以表示为 white
  • 十六进制格式,例如黑色可以表示为 #000000,白色可以表示为 #FFFFFF
  • rgb(),例如黑色可以表示为 rgb(0,0,0),白色可以表示为 rgb(255,255,255)


而在 CSS3 中,又新增三种方法,分别是:


  • hsl():h 表示色调 (hue),s 表示饱和度 (saturate),l 表示亮度 (lightness)

hue:数值,取值范围为 0 ~ 359,例如红色为 0,绿色为 120,蓝色为 240

saturate:百分比,100% 为实际色调,0% 为灰色

lightness:百分比,50% 为实际色调,0% 为黑色,100% 为白色


  • rgba():r 表示红色 (red),g 表示绿色 (green),b 表示蓝色 (blue),a 表示不透明度 (alpha)
  • hsla():h 表示色调 (hue),s 表示饱和度 (saturate),l 表示亮度 (lightness),a 表示不透明度 (alpha)


2、阴影


我们既可以为块级元素添加阴影,也可以为文字添加阴影

(1)块级元素阴影

我们可以使用 box-shadow 为块级元素添加阴影

box-shadow: offset-x offset-y blur-radius spread-radius color inset;


  • offset-x:水平偏移位置,必需
  • offset-y:垂直偏移位置,必需
  • blur-radius:模糊距离,可选,指定阴影的模糊程度
  • spread-radius:阴影半径,可选,指定阴影的区域大小
  • color:阴影颜色,可选,默认值是黑色
  • inset:默认情况下设置的阴影是外部阴影,使用 inset 可以将阴影设置为内部阴影


<!DOCTYPE html>
<html>
<head>
    <style>
        .moon {
            width: 100px;
            height: 100px;
            border-radius: 50px;
            background-color: rgba(255, 244, 99, 0.8);
            box-shadow: 5px 5px 5px 10px rgba(255, 244, 99, 0.2);
        }
    </style>
</head>
<body>
    <div class="moon"></div>
</body>
</html>

(2)文字阴影

我们可以使用 text-shadow 属性为文字添加阴影

text-shadow: offset-x offset-y blur-radius color;
  • offset-x:水平偏移位置,必需
  • offset-y:垂直偏移位置,必需
  • blur-radius:模糊距离,可选
  • color:阴影颜色,可选,默认值是黑色
<!DOCTYPE html>
<html>
<head>
    <style>
        .shadow {
            font-size: xx-large;
            font-weight: bolder;
            color: black;
            background-color: white;
            text-shadow: 5px 5px 5px gray;
        }
    </style>
</head>
<body>
    <div class="shadow">你好,世界</div>
</body>
</html>


3、渐变


渐变效果有两种类型,分别是线性渐变(Linear Gradient)和径向渐变(Radial Gradient)

  • 线性渐变:渐变效果向下、向右或向对角方向展开
  • 径向渐变:渐变效果从中心开始向四周展开


(1)线性渐变

可以将 background-image 属性的值设置为 linear-gradient 添加线性渐变效果

background-image: linear-gradient(direction, color-stop1, color-stop2, ...);


  • direction:指定渐变方向,可选,下面列举几个常见的值:


to bottom:渐变方向从上到下展开,默认值

to right:渐变效果从左到右展开

to bottom right:渐变方向从左上到右下展开

<degree>:水平线和渐变线之间的角度,按逆时针方向计算


  • color-stop1, color-stop2, ...:指定渐变颜色,必需
<!DOCTYPE html>
<html>
<head>
    <style>
        .rainbow {
            width: 800px;
            height: 100px;
            background-color: white; /* linear-gradient 不生效时使用 */
            background-image: linear-gradient(to right, #FF0000, #FF7F00, #FFFF00, #00FF00, #00FFFF, #0000FF, #8B00FF);
        }
    </style>
</head>
<body>
    <div class="rainbow"></div>
</body>
</html>

(2)径向渐变

可以将 background-image 属性的值设置为 radial-gradient 添加线性渐变效果

background-image: radial-gradient(shape size at position, color-stop1, color-stop2, ...);
  • shape:指定形状,可选,取值如下:

ellipse:椭圆,默认值

circle:圆形


  • size:表示渐变到哪停止,可选,取值如下:


farthest-corner:最远角,默认值

closest-corner:最近角

farthest-side:最远边

closest-side:最近边


  • position:表示中心点所在的位置,可选
  • 它由两个百分数值决定,分别代表中心点在水平和垂直方向的位置,默认为 50% 50%


  • color-stop1, color-stop2, ...:指定渐变颜色,必需

<!DOCTYPE html>
<html>
<head>
    <style>
        .rainbow {
            width: 500px;
            height: 500px;
            background-color: white; /* radial-gradient 不生效时使用 */
            background-image: radial-gradient(circle farthest-corner at 0% 100%, #FF0000, #FF7F00, #FFFF00, #00FF00, #00FFFF, #0000FF, #8B00FF);
        }
    </style>
</head>
<body>
    <div class="rainbow"></div>
</body>
</html>


4、反射


通过 -webkit-box-reflect 属性我们可以实现镜面效果

-webkit-box-reflect:direction offset mask-box-image


  • direction:反射方向,取值如下:
  • above:倒影出现在原对象的上方
  • below:倒影出现在原对象的下方
  • left: 倒影出现在原对象的左方
  • right:倒影出现在原对象的右方
  • offset:倒影与原对象之间的间距
  • mask:遮罩效果,图片或者渐变


<!doctype html>
<html>
<head>
    <style>
        .reflect {
            font-size: xx-large;
            font-weight: bolder;
            -webkit-box-reflect: below 5px linear-gradient(transparent, rgba(255, 255, 255, 0.2));
        }
    </style>
</head>
<body>
    <div class="reflect">你好,世界</div>
</body>
</html>


5、字体


@font-face 规则用来加载字体,它甚至可以让我们使用服务端的字体文件,一个例子如下:

@font-face
{
    /* font-family 属性指定字体名称 */
    font-family: myFont;
    /* src 属性指定资源位置 */
    src: url('myFont.ttf'), url('myFont.eot')/* IE9 */;
}


然后就能在文件中直接使用,例子如下:

.use-my-font {
    font-family: myFont; /* 自定义的字体名称 */
}


6、转换


使用 transform 属性,我们可以使得元素变形,包括平移、旋转、缩放和倾斜


平移,参数 x、y、z 分别定义沿着 X 轴、Y 轴、Z 轴的移动距离

translate(x,y)、translate3d(x,y,z)、translateX(x)、translateY(y)、translateZ(z)


旋转,参数 x、y、z 分别定义沿着 X 轴、Y 轴、Z 轴的旋转矢量,angle 定义顺时针旋转角度

rotate(angle)、rotate3d(x,y,z,angle)、rotateX(angle)、rotateY(angle)、rotateZ(angle)


缩放,参数 x、y、z 分别定义沿着 X 轴、Y 轴、Z 轴的缩放倍数

scale(x,y)、scale3d(x,y,z)、scaleX(x)、scaleY(y)、scaleZ(z)


倾斜,参数 x-angle、y-angle 分别定义与 X 轴、Y 轴的倾斜夹角,该操作会导致形状发生变化

skew(x-angle,y-angle)、skewX(x-angle)、skewY(y-angle)


<!doctype html>
<html>
<head>
    <style>
        .frame {
            width: 900px;
            height: 900px;
            min-width: 900px;
            min-height: 900px;
            display: flex;
            flex-direction: row;
            flex-wrap: wrap;
        }
        .photo {
            margin: 0;
            padding: 0;
            width: 300px;
            height: 300px;
            float: left;
            overflow: hidden;
        }
        .photo:hover {
            cursor: pointer;
            transition: transform 0.4s;
            transform: scale(1.2, 1.2);
        }
    </style>
</head>
<body>
    <div class="frame">
        <div class="photo"><img src="https://cdn.pixabay.com/photo/2017/08/30/01/05/milky-way-2695569__340.jpg" /></div>
        <div class="photo"><img src="https://cdn.pixabay.com/photo/2017/08/30/01/05/milky-way-2695569__340.jpg" /></div>
        <div class="photo"><img src="https://cdn.pixabay.com/photo/2017/08/30/01/05/milky-way-2695569__340.jpg" /></div>
        <div class="photo"><img src="https://cdn.pixabay.com/photo/2017/08/30/01/05/milky-way-2695569__340.jpg" /></div>
        <div class="photo"><img src="https://cdn.pixabay.com/photo/2017/08/30/01/05/milky-way-2695569__340.jpg" /></div>
        <div class="photo"><img src="https://cdn.pixabay.com/photo/2017/08/30/01/05/milky-way-2695569__340.jpg" /></div>
        <div class="photo"><img src="https://cdn.pixabay.com/photo/2017/08/30/01/05/milky-way-2695569__340.jpg" /></div>
        <div class="photo"><img src="https://cdn.pixabay.com/photo/2017/08/30/01/05/milky-way-2695569__340.jpg" /></div>
        <div class="photo"><img src="https://cdn.pixabay.com/photo/2017/08/30/01/05/milky-way-2695569__340.jpg" /></div>
    </div>
</body>
</html>


目录
相关文章
|
2天前
|
前端开发 容器
CSS3 新增背景属性 + 新增边框属性(如果想知道CSS3新增背景属性和新增边框属性的知识点,那么只看这一篇就够了!)
CSS3 新增背景属性 + 新增边框属性(如果想知道CSS3新增背景属性和新增边框属性的知识点,那么只看这一篇就够了!)
|
2天前
|
Web App开发 前端开发 编译器
CSS3私有前缀+新增盒模型相关属性(如果想知道CSS3私有前缀、新增盒模型相关属性的知识点,那么只看这一篇就足够了!)
CSS3私有前缀+新增盒模型相关属性(如果想知道CSS3私有前缀、新增盒模型相关属性的知识点,那么只看这一篇就足够了!)
|
2天前
|
前端开发 容器
CSS3新增文本属性(如果想知道CSS3新增文本属性的知识点,那么只看这一篇就够了!)
CSS3新增文本属性(如果想知道CSS3新增文本属性的知识点,那么只看这一篇就够了!)
|
10天前
|
前端开发 开发者
CSS进阶-CSS3多列布局
【6月更文挑战第14天】CSS3的多列布局简化了复杂布局,提供杂志样式排版。通过`column-*`属性如`column-count`和`column-gap`实现内容分割和列间距控制。常见问题包括内容溢出、列间距不当和兼容性问题。解决方法包括使用`word-break`和`hyphens`处理长单词,灵活设置列宽和列数,以及为旧浏览器提供回退方案。代码示例展示了一个自动平衡列高的两列布局。理解并解决这些问题将帮助开发者更好地利用CSS3多列布局。尽管有兼容性挑战,但它是现代网页设计的重要工具。
|
13天前
|
前端开发 JavaScript 开发者
CSS基础-CSS3过渡与动画
【6月更文挑战第11天】本文介绍了CSS3的过渡和动画特性,用于创建平滑的视觉效果。过渡通过`transition`属性实现元素样式改变的缓动效果,常用于按钮悬停、图片切换等场景。易错点包括忘记设置初始和最终样式,以及过渡效果不明显。动画则利用`@keyframes`定义关键帧序列,适用于循环播放的图标旋转等复杂效果。动画的错误可能在于结束状态处理和无限循环的性能问题。通过代码示例和避免常见陷阱,开发者能更好地利用CSS3动画提升网页交互体验。关键在于适度使用,保持界面流畅舒适。
|
3天前
|
前端开发
番外篇-CSS3新增特性
番外篇-CSS3新增特性
5 0
|
前端开发
CSS3新特性回顾
CSS3 介绍 开始实例 新特征简介 强大的CSS选择器 抛弃图片的视觉效果 盒模型变化(多列布局和弹性盒模型) 阴影效果 Web字体和web Font 图标 CSS33过渡与动画交互效果 媒体查询 查看浏览器份额 点我查看 伪类(Pesudo Classes) (1)动态伪类选择器 实例 ...
1362 0
|
2天前
|
前端开发
HTML+CSS练习小项目——百叶窗
HTML+CSS练习小项目——百叶窗
|
6天前
|
编解码 前端开发
编写代码中常见问题汇总(html和css)
text-indent用于首行缩进,line-height与height相同实现垂直居中;vertical-align:middle用于行内元素居中;text-align:center做水平居中;list-style:none清除列表符号;overflow:hidden隐藏溢出;background-repeat:no-repeat阻止平铺;float:left实现横排;相对定位父元素,绝对定位子元素;box-sizing调整盒子模型;用边框或overflow解决盒子塌陷;
25 5
|
10天前
|
缓存 移动开发 前端开发
在PWA的开发中,HTML与CSS作为前端技术的基础,发挥着至关重要的作用
【6月更文挑战第14天】PWA(渐进式网页应用)借助HTML和CSS,提供接近原生应用的体验。HTML构建页面结构和内容,响应式设计适应各种设备,语义化标签提升可访问性,Manifest文件配置应用元数据,离线页面保证无网时体验。CSS则用于定制主题样式,创建动画效果,实现响应式布局,并管理字体和图标。两者协同工作,确保PWA在不同环境下的优秀性能和用户体验。随着前端技术进步,HTML与CSS在PWA中的应用将更加深入。
22 2