css3手册

news2024/11/27 10:21:59

文章目录

  • 布局
    • 弹性盒
      • 生成弹性容器和弹性项目
      • 更改方向
      • 主轴排列
      • 侧轴排列
      • 弹性项目伸缩
      • 主轴换行
    • 网格
      • 生成网格布局
      • 定义行和列
      • 改变排列方向
      • 单元格之间的间隙
      • 单元格内部的对齐
      • 网格项目定位
  • 视觉
    • 阴影
      • 盒子阴影
      • 文字阴影
    • 圆角
    • 背景渐变
    • 变形
      • translate 平移
      • scale 缩放
      • rotate 旋转
      • 改变变形原点
      • 多种变形叠加
  • 过渡和动画
    • 过渡
    • 动画
  • 其他
    • box-sizing
    • 字体图标
    • 图像内容适应
    • 视口单位
    • 伪元素选择器
    • 平滑滚动

布局

image-20210511102549096

浮动:做文字环绕效果

弹性盒:单行或单列布局

网格:多行多列布局

弹性盒

详细文档见MDN

弹性盒小游戏

生成弹性容器和弹性项目

image-20210511112624876

**默认情况下,**弹性项目沿着主轴依次排列,侧轴拉伸

更改方向

通过flex-direction可更改主轴方向

image-20210511112510632

主轴排列

通过justify-content属性,可以影响主轴的排列方式

image-20210511113617325

侧轴排列

通过align-items属性,可以影响侧轴的排列方式

image-20210511114016304

弹性项目伸缩

所谓伸缩,是指在主轴方向上,当弹性容器额外空间时,是否需要拉伸,当空间不足时,是否需要压缩

弹性项目上使用flex属性,可设置拉伸和压缩比例:flex: 拉伸比例 压缩比例 初始尺寸

拉伸示例:

image-20210511120916571

压缩示例:

image-20210511121459341

默认情况下,flex: 0 1 auto

主轴换行

默认情况,当主轴剩余空间不足时,按照压缩比例进行压缩,但如果设置了主轴换行,则不会压缩,直接换行显示

弹性容器设置flex-wrap: wrap,即可主轴换行

image-20221128055453334

尽管如此,多行多列仍然推荐使用网格布局

网格

MDN详细文档

阮一峰网格布局教程

网格布局小游戏

网格布局是多行多列布局的终极解决方案

生成网格布局

image-20221128060049157

容器生成网格布局后,其所有子元素为网格项目

定义行和列

grid-template-rows:定义行

grid-template-columns:定义列

它们的语法是相同的

image-20210511172305100

改变排列方向

使用属性grid-auto-flow: column,可使子元素按列排放

image-20221128055924464

单元格之间的间隙

row-gap: 10px; /* 行间隙为10px */
column-gap: 20px; /* 列间隙为20px */
gap: 10px 20px; /* 行间隙为10px,列间隙为20px */

image-20221128055610024

单元格内部的对齐

默认情况下,网格项目在单元格内部水平和垂直拉伸,以撑满单元格

可以使用属性justify-items设置水平方向的排列方式

可以使用属性align-items设置垂直方向的排列方式

它们的可取值是相同的:

justify-items: start 左 | end 右 | center 中 | stretch 拉伸;
align-items: start 上 | end 下 | center 中 | stretch 拉伸;

image-20221128055639529

可以使用速写属性place-items: 垂直对齐方式 水平对齐方式同时设置这两个值

place-items: start center; /* 垂直靠上,水平居中 */

网格项目定位

默认情况下,网格项目依次排列到单元格中,每个网格占据一个单元格

但可以对网格项目设置grid-area属性来改变这一行为

使用方式为:

grid-area: 起始行线编号/起始列线编号/结束行线编号/结束列线编号;

image-20221128055720535

视觉

所谓视觉类样式,是指不影响盒子位置、尺寸的样式,例如文字颜色、背景颜色、背景图片等

阴影

盒子阴影

MDN详细文档

通过box-shadow属性可以设置整个盒子的阴影

下面是一些示例

文字阴影

MDN详细文档

通过text-shadow可以设置文字阴影

下面是一些示例

圆角

MDN详细文档

通过设置border-radius,可以设置盒子的圆角

image-20221128060253467

border-radius可以有很多灵活的用法,将下面的代码依次粘贴到页面中测试一下

border-radius: 10px; /* 同时设置4个角的圆角,半径为10px */
border-radius: 50%; /* 同时设置4个角的圆角,圆的横向半径为宽度一半,纵向半径为高度一半 */
border-radius: 10px 20px 30px 40px; /* 分别设置左上、右上、右下、左下的圆角 */

背景渐变

MDN详细文档

在设置背景图片时,除了可以使用url()加载一张背景图,还可以使用linear-gradient()函数设置背景渐变

linear-gradient()用于创建一张渐变的图片,语法为:

/* 设置渐变背景,方向:从上到下,颜色:从#e66465渐变到#9198e5 */
background: linear-gradient(to bottom, #e66465, #9198e5);

image-20210512135024676

变形

MDN详细文档

通过transform属性,可以使盒子的形态发生变化

该属性支持多种变形方案,常见的有:

  • translate,平移
  • scale,缩放
  • rotate,旋转

无论是哪一种transform,都只是视觉效果的变化,不会影响盒子的布局

transform不会导致浏览器reflow和rerender,因此效率极高

translate 平移

使用translate可以让盒子在原来位置上产生位移,类似于相对定位

image-20210512140622630

scale 缩放

使用translate可以让盒子在基于原来的尺寸发生缩放

image-20210512141500499

rotate 旋转

使用rotate属性可以在原图基础上进行旋转

/* 在原图的基础上,顺时针旋转45度角 */
transform: rotate(45deg); 
/* 在原图的基础上,顺时针旋转半圈 */
transform: rotate(0.5turn); 

可以点击下面的按钮试一下旋转效果

改变变形原点

MDN详细文档

变形原点的位置,会影响到具体的变形行为

默认情况下,变形的原点在盒子中心,你可以通过transform-origin来改变它

transform-origin: center; /* 设置原点在盒子中心 */
transform-origin: left top; /* 设置原点在盒子左上角 */
transform-origin: right bottom; /* 设置原点在盒子右下角 */
transform-origin: 30px 60px; /* 设置原点在盒子坐标 (30, 60) 位置 */

试一试,先点击设置原点的按钮来设置原点(已在图片中使用红色小点标记),然后点击变形按钮进行变形

多种变形叠加

可以一次性设置多种变形效果

/* 先旋转45度,再平移(100,100) */
transform: rotate(45deg) translate(100px, 100px);
/* 先平移(100, 100),再旋转45度 */
transform: translate(100px, 100px) rotate(45deg);

transform:scaleY(0); /*Y轴隐藏(0倍)*/
transform:scaleY(1); /*Y轴展示(1倍)*/

注意:旋转会导致坐标系也跟着旋转,从而可能影响到后续的变形效果

下面的例子可以很好的说明这一点

http://mdrs.yuanjin.tech/html/css-manual/multi-transform.html

本来打算把这个效果嵌入到markdown,但由于嵌入后出现一些未知的bug,因此只能粘贴效果地址了

过渡和动画

使用过渡和动画,可以让css属性变化更加丝滑

过渡和动画无法对所有的CSS属性产生影响,能够产生影响的只有数值类属性,例如:颜色、宽高、字体大小等等

过渡

MDN详细文档

transition: 过渡属性 持续时间 过渡函数 过渡延迟
  • 过渡属性

    针对哪个css属性应用过渡。例如填写transform,则表示仅针对transform属性应用过渡。

    若填写all或不填写,则表示针对所有css属性都应用过渡

  • 持续时间

    css属性变化所持续的时间,需要带上单位。例如3s表示3秒,0.5s500ms均表示500毫秒

  • 过渡函数

    本质是css属性变化的贝塞尔曲线函数,通常直接使用预设值:

    ease-in-out:平滑开始,平滑结束

    linear:线性变化

    ease-in:仅平滑开始

    ease-out:仅平滑结束

  • 过渡延迟

    书写规则和持续时间一样,表示过渡效果延迟多久后触发,不填则无延迟

在JS中,可以监听元素的transitionstarttransitionend事件,从而在过渡开始和过渡结束时做一些别的事情

动画

MDN详细文档

动画的本质是预先定义的一套css变化规则,然后给该规则取个名字

image-20210513172902413

然后,其他元素即可使用这样的规则:

animation: 规则名 持续时间;

在应用规则时,还可以指定更多的信息

animation: 规则名 持续时间 重复次数 时间函数 动画方向 延迟时间

一些细节:

  • 定义规则时,0%可以书写为from
  • 定义规则时,100%可以书写为to
  • 重复次数为infinite时,表示无限重复
  • 动画方向为alternate时,表示交替反向,第1次正向,第2次反向,第3次正向,第4次方向,以此类推

在JS中,可以监听元素的animationstartanimationnend事件,从而在过渡开始和过渡结束时做一些别的事情

其他

box-sizing

一图胜千言

image-20210514150015660

使用border-box控制尺寸更加直观,因此,很多网站都会加入下面的代码

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

字体图标

MDN font-face 指令

css3新增了font-face指令,该指令可以让我们加载网络字体

其最常见的应用就是字体图标

字体图标本质上是文字,即通过color设置颜色,通过font-size设置尺寸

国内使用最多的字体图标平台是阿里巴巴矢量图标库

登录平台后即可免费使用其所有字体图标

图像内容适应

MDN详细文档

css3属性object-fit可以控制多媒体内容和与元素的适应方式,通常应用在imgvideo元素中

一图胜千言

下图中的所有img元素均被固定了宽高,溢出img的部分实际上均不会显示

image-20210514134908778

视口单位

css3支持使用vwvh作为单位,分别表示视口宽度视口高度

例如1vh表示视口高度的1%100vw表示视口宽度的100%

伪元素选择器

通过::before::after选择器,可以通过css给元素生成两个子元素

image-20221128055816536

使用伪元素可以避免在HTML中使用过多的空元素

伪元素必须要有content属性,否则不能生效,如果不需要有元素内容,设置content:''

平滑滚动

MDN详细文档

使用scroll-behavior: smooth,可以让滚动更加丝滑

参见MDN效果即可

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

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

相关文章

spring MVC源码探索之AbstractHandlerMethodMapping

AbstractHandlerMethodMapping 是什么 官方解释是这样的。 /*** Abstract base class for {link HandlerMapping} implementations that define* a mapping between a request and a {link HandlerMethod}.** <p>For each registered handler method, a unique mapping…

Java项目:ssm毕业论文管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 毕业设计管理系统 1、本系统使用SSM框架 2、有管理员、教师、学生三种角色&#xff0c;管理员使用admin/admin登录&#xff0c;教师使用t_01/6666登录&a…

JavaWeb简单实例——DBUtils

简单介绍&#xff1a; DBUtils是一个用来简化我们JDBC的编码工作量的一个工具。它可以在不影响数据库访问性能的情况下简化我们的代码编辑量。DBUtils的作用主要是&#xff1a;写数据&#xff0c;读数据&#xff0c;优化性能。 常用的类和对应的API&#xff1a; QureyRunner…

Spring Framework 6正式发布,携JDK 17Jakarta EE开启新篇章

本文已被https://yourbatman.cn收录&#xff1b;女娲Knife-Initializr工程可公开访问啦&#xff1b;程序员专用网盘https://wangpan.yourbatman.cn&#xff1b;技术专栏源代码大本营&#xff1a;https://github.com/yourbatman/tech-column-learning&#xff1b;公号后台回复“…

1.什么是闭包

什么是闭包 1. 概念 闭包&#xff08;closure&#xff09;指有权访问另一个函数作用域中变量的函数。—《JavaScript高级程设计》 简单理解就是一个函数。 2. 如何产生闭包&#xff1f; 当一个嵌套的内部函数引用了嵌套的外部函数的变量&#xff08;函数&#xff09;时&…

CANoe-vTESTstudio之Test Diagram编辑器(元素介绍)

Test Diagram编辑器里的工具箱,有多个图形符号,它们是组成测试图表的图形元素,具有不同的作用。图形元素能够高效并快速地创建测试图表,然后生成测试用例 1. 基本测试设计元素 基本元素用来创建图形设计 1.1 Setup Setup元素的测试代码能够执行一次,在检查测试用例之前…

特别有用!Jmeter命令行执行时设置并发数和循环次数的方法

Jmeter命令行方式运行概述 之前写过一篇文章介绍如何在centos上部署jmeter来执行性能测试&#xff0c;链接如下&#xff1a; https://blog.csdn.net/liwenxiang629/article/details/124140833 因为大多数linux服务器都是没有GUI界面的&#xff0c;这就需要我们通过命令行的方…

MobPush Android For Unity

集成准备 注册账号 使用MobSDK之前&#xff0c;需要先在MobTech官网注册开发者账号&#xff0c;并获取MobTech提供的AppKey和AppSecret&#xff0c;详情可以点击查看注册流程 下载.unitypackage包 打开 Github 下载 MobPush-For-Unity 项目&#xff0c;下载完成后直接双击或…

【图神经网络论文整理】(十)—— How Powerful are Graph Neural Networks?:GIN

作者信息&#xff1a;Keyulu Xu, Weihua Hu, Jure Leskovec, Stefanie Jegelka论文来源&#xff1a;Computer Vision and Pattern Recognition论文地址&#xff1a;https://arxiv.org/abs/1810.00826 本文介绍的论文是《How Powerful are Graph Neural Networks?》。 作者提…

MySQL表的增删查改(嘎嘎详细~

hello呀&#xff01;各位&#xff0c;这里是Sunlightʊə。 目前大三&#xff0c;主要在学习Java语言。可以一起交流呀&#xff01; 相关文章&#xff1a; MySQL数据库的基础操作&#xff08;简单、基础版 专栏&#xff1a; Java数据结构 Java基础语法 MySQL基础 目录 新增&am…

流式 Isotype control 流式细胞仪control组

流式细胞术是非常让人着迷的实验。在众多医学研究手段里,如果说弱水三千只取一瓢的话,那我会首选流式细胞术。从我个人感受来讲,流式细胞术高速客观,具有统计学意义,能够处理复杂样本并同时获取多种参数,最最关键的是它性能可靠,可重复性非常好。 虽然也存在一些局限,…

3款超实用的电脑软件,免费又良心,内存满了也绝不卸载

超强的3款电脑软件&#xff0c;每款都是百里挑一的精品。 1、视频画质增强器 这是国人开发的图片视频增强工具&#xff0c;完全免费无任何弹屏广告&#xff0c;它能将画质很差的图片&#xff0c;一键转化为高清大图&#xff0c;同时还能无损放大图片&#xff0c;图片输出格式支…

第150篇 笔记-元宇宙(Metaverse)

定义&#xff1a;元宇宙是一个整体虚拟世界的概念&#xff0c;它与现实世界并行存在&#xff0c;提供主权数字所有权、独特的在线身份、互联环境和沉浸式体验。 随着最近区块链生态系统中NFT的爆炸&#xff0c;以及Facebook的头部转向“Meta”&#xff0c;元宇宙已进入主流公众…

代码源每日一题div1 枚举倍数 平方计数

平方计数 - 题目 - Daimayuan Online Judge 题意&#xff1a; 思路&#xff1a; 首先注意到暴力枚举一定超时&#xff0c;因此我们考虑只枚举一个指针&#xff0c;然后推一推式子降低另一个指针的复杂度 对于完全平方数这个条件&#xff0c;我们无法直接转换 即对于每一个a[…

1.3 测控电路的信号类型、测控电路的类型与组成、测控电路的发展趋势

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

技术指南 | 如何集成Perforce版本控制系统Helix Core (P4V) 与敏捷规划工具Hansoft

Helix Core是Perforce公司旗下一款集源代码管理和内容协作为一体的版本配置与管理工具&#xff0c;可以帮助您管理随时间推移而产生的数字资产&#xff08;代码&#xff0c;文件等&#xff09;变更&#xff0c;处理每天数以千万计的传输&#xff0c;上千TB的数据&#xff0c;以…

zabbix模板监控和自定义监控

目录 一、环境准备 二、使用模板监控 1、添加监控主机 2、设置应用监控模板 3、查看监控数据 三、自定义监控 1、配置自定义监控key 2、创建自定义监控模板、应用集、监控项和图形 2.1、监控模板、应用集、监控项介绍 2.2、创建监控模板 2.3、给自定义模板添加应用集…

mysql回表查询和索引覆盖

作为 JAVA 开发的必备知识&#xff0c;了解回表查询和索引覆盖可以大大提升数据库查询的速度&#xff0c;也是优化数据库查询的必备知识。 1. 什么是索引? 索引&#xff08;在 MySQL 中也叫“键key”&#xff09;是存储引擎快速找到记录的一种数据结构&#xff0c;通俗来说类…

什么是Hystrix?简述实现机制

分布式容错框架 阻⽌故障的连锁反应&#xff0c;实现熔断 快速失败&#xff0c;实现优雅降级提供实时的监控和告警资源隔离&#xff1a; 线程隔离&#xff0c;信号量隔离 线程隔离&#xff1a;Hystrix会给每⼀个Command分配⼀个单独的线程池&#xff0c;这样在进⾏单个服务调⽤…

深入react源码看setState究竟做了什么?

前言 在深究 React 的 setState 原理的时候&#xff0c;我们先要考虑一个问题&#xff1a;setState 是异步的吗&#xff1f; 首先以 class component 为例&#xff0c;请看下述代码&#xff08;demo-0&#xff09; class App extends React.Component {state {count: 0}hand…