CSS基础(八)——CSS3新增样式

news2025/1/12 18:04:26

概述 

前面7篇博客记录的所有 CSS 知识,都是 CSS2 版本的功能。

CSS3 在 CSS2 版本的基础上,新增了很多特性,例如边框圆角、动画效果。

在 CSS2 的时代,实现圆角必须要用图片才能实现,而 CSS3 只要一行样式就能实现圆角。

在 CSS3 的时代,动画效果一定要使用 JavaScript 配合复杂的 CSS 样式操作才能实现(或者用 jQuery 这种第三方库)。CSS3 同样可以简单地实现动画效果,而且效果更佳。

早些年头,因为浏览器的兼容问题,并未广泛引用,但是近几年,随着随着各大浏览器厂商的标准化,大家可以畅快第使用 CSS3 了。

CSS3 新特性

  1. 边框圆角
  2. 阴影
  3. 形变:旋转、缩放、位移
  4. 过渡效果
  5. 动画效果
  6. 媒体查询
  7. flex 布局
  8. grid 布局

等等(选择器、字体)......

边框圆角

1、通过属性border-radius来设置 。

2、最多可以设置4个值,左上 右上 右下 左下。

如果设置2个值,第一个值表示左上和右下,第二个值表示右上和左下。

如果设置1个值,那么4个角都是一样的弧度。

3、border-radius的值就是半径r,半径越大——>圆越大——>弧度就越大。

4、值的计算方式如下:

阴影

1、属性:box-shadow

2、最多接收4个值,分别是偏移x轴距离,偏移y轴距离,模糊半径r,阴影颜色(默认是黑色)。

3、代码演示

width: 100px;
height: 100px;
background-color: red;
box-shadow: 10px 20px 30px blue;

形变

1、属性:transform

2、值:

  • rotate();旋转效果,参数为:数字+deg,以deg为单位,表示角度。
  • scale();缩放效果,参数为:数字,表示倍数。
  • translate();位移效果,参数为:某像素,某像素;分别表示距离x、y轴移动的距离。

3、想同时设置多种属性 :

语法为:

transform: rotate(45deg) translate(50px,100px);

表示这个div盒子先做了45度旋转,同时又做了位移。

过渡效果 

1、通过一个案例引入

案例要求

  1. 鼠标悬浮在元素之上,元素旋转45度(:hover使元素旋转)
  2. 如果元素以动画形式,从0度旋转到45度,效果更加
  3. 以动画的形式从0到45度,这就是过渡效果
.box{
    width: 100px;
    height: 100px;
    background-color: red;
    margin: 150px auto;
    transition-property: transform;
    transition-duration: 1s;
    }
.box:hover{
    transform: rotate(45deg);
    background-color: blue;
}

2、过渡属性有4种:

  • transition-property:过渡时间(例如transform)
  • transition-duration:过渡持续时间(例如1s)
  • transition-timing-function:过渡函数
  • transition-delay:过渡延迟时间

也可以简写:

transition: 属性 秒数 函数 延迟;

3、过渡函数

  • transition:属性 秒数 过渡函数;
  • ease:开始和结束慢,中间快,默认值。
  • linear:匀速。
  • ease-in:开始慢。
  • ease-out:结束慢。
  • ease-in-out:和ease类似,但比ease幅度大。

调式工具演示。

动画效果

1、和过渡效果的比较

  • 过渡效果是用户和网页行为交互的过程中,由一种CSS样式变成另外一种CSS样式。
  • 动画效果会自动变换CSS样式。

2、定义一个动画的语法(两种方法)

  • /*按照百分比指定动画*/
    @keyframes anim {
        /*进程为0%时的样式*/
        0% {
            transform: translate(0px, 0px);
        }
        /*进程为100%时的样式*/
        100% {
            transform: translate(900px, 100px);
        }
    }
  • /*from...to..指定动画从0%->100%*/
    @keyframes anim {
        from {
            transform: translate(0px, 0px);
        }
        /*进程为100%时的样式*/
        to {
            transform: translate(900px, 100px);
        }
    }

3、动画的值属性(animation)

  • animation-name:规定需要绑定到选择器的keyframe名称。
  • animation-duration: 规定完成动画所花费的时间,以秒或毫秒计。
  • animation-timing-function: 规定动画的速度曲线函数。
  • animation-delay: 规定在动画开始之前的延迟。
  • animation-iteration-count: 规定动画应该播放的次数。

4、应用-实现CD旋转效果 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        @keyframes anim {
            from{
                transform: rotate(0deg);
            }
            to{
                transform: rotate(360deg);
            }
        }
        .box {
            width: 200px;
            height: 200px;
            margin: 150px auto;
            border-radius: 50%;
            overflow: hidden;
            animation: anim 4s linear infinite;
        }
        .box img{
            height: 200px;
            width: 200px;
        }
        .box:hover{
            animation-play-state: paused;
        }
    </style>
</head>
<body>
    <div class="box">
        <img src="images/jay.jpg" alt="">
    </div>
</body>
</html>

停止动画效果

animation-play-state:paused;

媒体查询

flex 布局

flex是一个容器(父盒子),里面可以建立许多个项目(子盒子)

1、基本概念

  1. flex 是 flexible Box 的缩写,意为"弹性布局”,用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为 flex 布局。这是一种更先进的布局方式,可以让网页布局更简洁,更易于维护。
  2. flex布局的元素会把自己的一级子元素排成一行,并将他们变成可以伸缩,易排列的盒子。
  3. 当我们为父盒子设为 flex 布局以后,子元素的 float、clear 和 vertical-align 属性将失效。
  4. 伸缩布局=弹性布局=伸缩盒布局=弹性盒布局=flex 布局

 flex盒子模型有两条轴:

  • main axis:主轴
  • cross axis:交叉轴

2、flex容器中的默认效果

  • flex项目在flex容器中沿主轴排列,flex项目里的子级盒子按行排列。
  • flex项目高度适应flex容器高度(同行内元素)。

3、设置flex容器的属性

  • flex-direction:设置flex项目排列方向。
  • justify-content:flex项目主轴排列方式。
  • align-item:flex项目在交叉轴的排列方式。

 3.1、flex-direction的值:

  • row(默认值):主轴为水平方向,起点在左端。
  • row-reverse:主轴为水平方向,起点在右端。
  • column:主轴为垂直方向,起点在上沿。
  • column-reverse:主轴为垂直方向,起点在下沿。

3.2、justify-content的值

按照主轴,控制flex元素的对齐效果。

  • flex-start(默认值):左对齐
  • flex-end:右对齐
  • center:居中
  • space-between:两端对齐,项目之间的间隔都相等。
  • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

 3.3、align-item的值

  • 按照交叉轴,控制flex元素的对齐效果。
  • flex-start:交叉轴的起点对齐。
  • flex-end:交叉轴的终点对齐。
  • center:交叉轴的中点对齐。
  • stretch(延伸,默认值):如果项目未设置高度或设置为auto,将占满整个容器高度。

4、flex项目(flex盒子里面的子盒子)的属性

  •  flex-grow:属性定义项目的放大比例,默认为0,空间充足,等比例补全。
  • flex-shrink:定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
  • flex-basis:主轴排列为宽度,交叉轴排列为高度,设置px,默认值是auto。
  • flex:综合上面三个样式。
  • align-self:flex项目的对齐方式(auto、flex-start、flex-end、center、baseline、stretch)

grid 布局

1、概述

  • flex布局是一维布局,grid布局是二维布局。
  • flex考虑的是项目行或列布局,grid布局需要同时考虑行和列。

2、grid布局和flex布局的应用场景对比

  • flex布局替换float布局更易于维护、更简洁
  • grid用于实现整体网页的架构

3、 设置grid容器

        .container{
            display: grid;
            grid-template-columns: 100px 100px 100px;
            grid-template-rows: 100px 100px 100px;
        }

        .container{
            display: grid;
            grid-template-columns: 100px 1fr 2fr;
            grid-template-rows: 100px 100px 100px;
        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/145837.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot+MySQL(官方案例)

在线文档项目结构 1.源码克隆&#xff1a;git clone https://github.com/spring-guides/gs-accessing-data-mysql.git 2.包含两个项目initial和complete&#xff0c;initial可以根据文档练习完善&#xff0c;complete是完整项目 3.功能描述&#xff1a;构建应用程序&#xff0c…

【jQuery】jQuery基础概念

一、JavaScript库1.仓库可以把很多东西放到这个仓库里面。找东西只需要到仓库里面查找到就可以了。2. JavaScript库即 library&#xff0c;是一个封装好的特定的集合&#xff08;方法和函数)。从封装一大堆函数的角度理解库&#xff0c;就是在这个库中&#xff0c;封装了很多预…

信息技术 安全技术 密钥管理

声明 本文是学习github5.com 网站的报告而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 前 言 GB/T 17901《信息技术 安全技术 密钥管理》分为六个部分&#xff1a; ——第1部分&#xff1a;框架&#xff1b; ——第2部分&#xff1a;使用对称技术的…

Odoo 16 企业版手册 - 库存管理之库位管理

库存位置 配置和管理Odoo 库存模块中可用位置的平台将帮助您定义仓库中存放产品的地方。在单个仓库中&#xff0c;您可以管理库存的多个位置。从库存模块的「设置」菜单中&#xff0c;您可以激活存储位置功能&#xff0c;如下所示&#xff0c;该功能将帮助您跟踪仓库中的产品位…

为什么使用消息中间件

为什么要使用消息中间件 如有一个电商交易的场景&#xff0c;用户下单之后调用库存系统减库存&#xff0c;然后调用物流系统进行发货&#xff0c;如果刚开始交易&#xff0c;库存&#xff0c;物流都是属于一个系统&#xff0c;那么他们之间就是接口调用。但是随着系统的发展&a…

FRP 内网穿透搭建(无域名)

一、为什么要内网穿透 FRP 可用于内网穿透的高性能的反向代理应用&#xff0c;支持 tcp, udp, http, https 协议。 使用场景&#xff1a;公网服务器监听某个端口等待内网服务器连接&#xff0c;内网服务器连接成功后&#xff0c;用户访问公网的某一个端口&#xff0c;访问的所…

Domino Web应用早就想到了环保

大家好&#xff0c;才是真的好。 前几周我们讲了Notes&#xff0c;上周讲了点管理&#xff0c;这周我们可以讲点开发。 我现在要讲的技术真的很古老&#xff0c;但现在却被越来越多的人提倡。 传统的Notes应用可以很简单地通过浏览器访问&#xff0c;以一个非常简单但又很使…

ESP32设备驱动-MCP9808数字温度传感器驱动

MCP9808数字温度传感器驱动 文章目录 MCP9808数字温度传感器驱动1、MCP9808介绍2、硬件准备3、软件准备4、驱动实现1、MCP9808介绍 MCP9808 数字温度传感器将 -20C 和 +100C 之间的温度转换为精度为 0.5C(最大值)的数字字。 MCP9808 带有用户可编程寄存器,可为温度传感应用…

联力L216装机心得

联力L216装机心得 2022年12月份装机笔记 参考视频 B站硬件茶谈装机&#xff1a;https://www.bilibili.com/video/BV1BG4y137mG/?spm_id_from333.337.search-card.all.click&vd_source8f7bdd23b317e50e9b9803f44de6a213 联力L216机箱介绍:https://www.bilibili.com/vid…

ArcGIS基础实验操作100例--实验57由点坐标生成面要素

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验57 由点坐标生成面要素 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;…

【Qt】自动查找Qt应用程序缺少的依赖库

【Qt】自动查找Qt应用程序缺少的依赖库1、背景2、实例3、验证1、背景 操作系统&#xff1a;windows10专业版&#xff0c;如下图&#xff1a; Qt版本&#xff1a;qt-opensource-windows-x86-msvc2013_64-5.7.1.exe 使用Qt安装后的qtcreator5.7.1开发Qt应用程序。 将编译生成的…

基于Vue和SpringBoot的超市账单管理系统的设计和实现

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;Java全栈软件工程师一枚&#xff0c;来自浙江宁波&#xff0c;负责开发管理公司OA项目&#xff0c;专注软件前后端开发&#xff08;Vue、SpringBoot和微信小程序&#xff09;、系统定制、远程技术指导。CSDN学院、蓝桥云…

【练习】Day03(未完成版)

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录一、选择二、编程1. 括号生成2. 颜色分类答案1. 选择2. 编程提普通小孩也要热爱生活&#xff01; 一、选择 下列Java代码中的变量a、b、c分别在内存的____存储区存放。 class A {private String a “aa”;public…

SpringBoot+JPA(官方案例)

在线文档项目结构 1.源码克隆&#xff1a;git clone https://github.com/spring-guides/gs-accessing-data-jpa.git 2.包含两个项目initial和complete&#xff0c;initial可以根据文档练习完善&#xff0c;complete是完整项目 3.功能描述&#xff1a;构建应用程序&#xff0c;使…

相机标定中的战斗机--张氏标定法

张正友标定法--相机标定中的灭霸&#xff01;在上学期接触过calibration以后&#xff0c;下定决心要学一下张正友标定法的&#xff0c;然后没来的及学&#xff0c;寒假弥补一下。参考博客&#xff1a;https://zhuanlan.zhihu.com/p/136827980编辑切换为居中添加图片注释&#x…

车牌识别数据收集之自动化筛选工具

综述 最近在进行车牌识别的开发&#xff0c;在数据收集阶段除了那些特定的数据集&#xff08;开源数据集&#xff09;&#xff0c;还需要自己收集一些数据&#xff0c;这些数据主要来自如爬虫、行车记录视频、非特定数据集&#xff0c;而在这些数据集中&#xff0c;只有少量的…

PCB结构和谐振(二)

PCB结构和谐振&#xff08;一&#xff09;实验研究在此章节中&#xff0c;我们通过不同的测试研究了旋转角度/复杂层叠/走线pitch和layout设计等&#xff0c;所有的测试都是基于Intel Delta L 4.0规范。旋转角度单层结构是一个简单的层叠&#xff0c;所以首先通过测试单层结构研…

成都远石无人机航测服务内容

成都远石无人机航测服务致力于为客户提供DEM、DSM、DOM、三维实景模型和机载激光雷达等数据成果&#xff0c;获得的数据成果在各个行业得到了应用和认可。相信大家对于DEM、DSM和DOM这些名词并不陌生&#xff0c;但对其内涵和差别却又比较模糊&#xff0c;接下来就讲一下这些数…

Android:OKhttp拦截器整理笔记

目录 正文 拦截器的自我实现 RetryAndFollowUpInterceptor BridgeInterceptor CacheInterceptor ConnectInterceptor CallServerInterceptor 运行一下 题外话 OkHttp是一个高效的HTTP库: 支持HTTP/2, HTTP/2通过使用多路复用技术在一个单独的TCP连接上支持并发, 通过…

Referer与XMLHttpRequest整理

Apache日志分割 1.原因 1.随着网络的访问量的增加&#xff0c;默认情况下Apache的单个日志文件也会越来越大。 2.日志文件占用磁盘空间很大 3.查看相关信息不方便2.对日志文件进行分割 1.Apache自带rotatelogs分割工具实现 2.第三方工具cronolog 分割3.配置日志分割(我用的p…