CSS很难学吗?这几个属性掌握了,秒变CSS大神!
myzbx 2024-12-24 14:27 18 浏览
记录、分享IT相关知识和见闻!
想要了解更多软件相关知识的朋友!
记得右上角添加【关注】,支持一下!
CSS 是前端开发中不可或缺的一部分,用于控制网页的样式和布局。
虽然 CSS 看起来很简单,但实际上它有很多属性和特性,需要花费一定的时间和精力去学习和掌握。
本文将介绍一些常用的 CSS 属性,包括 `border`、`display`、`padding`、`margin`、`rem`、`em` 和 `box-sizing`。这些属性涵盖了 CSS 中的基本概念和常见用法,掌握它们可以让你在 CSS 中游刃有余,成为一名 CSS 大神。
? Box-sizing
CSS `box-sizing` 属性用于设置 HTML 元素的盒模型。
盒模型是指元素的宽度和高度是由内容、内边距、边框和外边距组成的。
CSS 中有两种盒模型:内容盒模型和边框盒模型。
- 内容盒模型(`box-sizing: content-box`):元素的宽度和高度只包括内容,
不包括内边距、边框和外边距。这是默认的盒模型。
- 边框盒模型(`box-sizing: border-box`):元素的宽度和高度包括内容、
内边距和边框,不包括外边距。
使用 `border-box` 盒模型可以更方便地设置元素的宽度和高度,
因为不需要考虑内边距和边框的影响。
例如,如果要创建一个宽度为 200px、内边距为 10px、边框为 1px 的盒子,
使用 `content-box` 盒模型需要将宽度设置为 212px(200px + 2 × 10px + 2 × 1px),
而使用 `border-box` 盒模型只需要将宽度设置为 200px。
以下代码展示了 `box-sizing` 属性的用法:
div {
width: 200px;
height: 100px;
padding: 10px;
border: 1px solid #ccc;
margin: 10px;
box-sizing: content-box; /* 默认值 */
}
div.box {
box-sizing: border-box;
}
? Fonts (rem, em)
`rem` 和 `em` 都是 CSS 中用于设置字体大小的单位,但它们的计算方式不同。
`rem` 单位是相对于根元素(即 `<html>` 元素)的字体大小来计算的。
例如,如果根元素的字体大小为 16px,那么 `1rem` 就等于 16px,`2rem` 就等于 32px,
以此类推。
使用 `rem` 单位可以方便地实现响应式设计,
因为根元素的字体大小可以根据屏幕尺寸或设备类型进行调整。
`em` 单位是相对于父元素的字体大小来计算的。例如,如果父元素的字体大小为 16px,
那么 `1em` 就等于 16px,`2em` 就等于 32px,以此类推。使用 `em` 单位
可以方便地实现相对大小的字体和布局,因为它们可以根据父元素的字体大小进行缩放。
以下代码展示了 `rem` 和 `em` 单位的用法:
html {
font-size: 16px;
}
h1 {
font-size: 2rem; /* 等于 32px */
}
p {
font-size: 1.2rem; /* 等于 19.2px */
line-height: 1.5em; /* 等于 28.8px */
}
.container {
font-size: 1.5em; /* 等于父元素字体大小的 1.5 倍 */
}
.box {
font-size: 0.8em; /* 等于父元素字体大小的 0.8 倍 */
padding: 1em; /* 等于父元素字体大小的 1 倍 */
}
? Padding & Margin
CSS `padding` 和 `margin` 属性用于设置 HTML 元素的内边距和外边距:
- `padding-top`、`padding-right`、`padding-bottom`、`padding-left`:
分别设置上、右、下、左四个方向的内边距。
- `padding`: 设置上、右、下、左四个方向的内边距,可以使用一个、两个或四个值来设置。
- `margin-top`、`margin-right`、`margin-bottom`、`margin-left`:
分别设置上、右、下、左四个方向的外边距。
- `margin`: 设置上、右、下、左四个方向的外边距,可以使用一个、两个或四个值来设置。
- `padding: auto`: 自动计算内边距,使元素居中。
- `margin: auto`: 自动计算外边距,使元素居中。
- `box-sizing: border-box`:
设置盒模型为边框盒模型,即元素的宽度和高度包括内边距和边框,不包括外边距。
- `box-sizing: content-box`:
设置盒模型为内容盒模型,即元素的宽度和高度只包括内容,不包括内边距、边框和外边距。
以下展示了 `padding` 和 `margin` 属性的多种用法:
div {
padding-top: 10px;
padding-right: 20px;
padding-bottom: 30px;
padding-left: 40px;
}
span {
padding: 10px 20px;
}
p {
margin-top: 10px;
margin-right: 20px;
margin-bottom: 30px;
margin-left: 40px;
}
a {
margin: 10px 20px;
}
.center {
padding: auto;
margin: auto;
width: 200px;
height: 100px;
background-color: #ccc;
}
.box {
box-sizing: border-box;
width: 200px;
height: 100px;
padding: 10px;
border: 1px solid #ccc;
margin: 10px;
}
.content {
box-sizing: content-box;
width: 200px;
height: 100px;
padding: 10px;
border: 1px solid #ccc;
margin: 10px;
}
? Display
CSS 的 display 属性用于设置元素的显示方式:
- `block`:将元素显示为块级元素,即在页面中显示为一块矩形区域,可以设置宽度、高度、内边距和外边距等属性。
- `inline`:将元素显示为行内元素,即在页面中显示为一行,不可以设置宽度、高度、内边距和外边距等属性。
- `inline-block`:将元素显示为行内块级元素,即在页面中显示为一行,但可以设置宽度、高度、内边距和外边距等属性。
- `none`:将元素隐藏,不占用页面空间。
- `flex`:将元素显示为弹性盒子,可以使用弹性盒子布局来排列子元素。
- `grid`:将元素显示为网格容器,可以使用网格布局来排列子元素。
- `table`:将元素显示为表格,可以使用表格布局来排列子元素。
- `list-item`:将元素显示为列表项,通常用于 ul 和 ol 元素的子元素。
- `inherit`:继承父元素的 display 属性值。
? Position
CSS 的 position 属性用于设置元素的定位方式:
- `static`:默认值,元素按照正常文档流排列,不进行定位。
- `relative`:相对定位,元素相对于其正常位置进行定位,可以使用 top、right、bottom、left 属性来设置偏移量。
- `absolute`:绝对定位,元素相对于其最近的已定位祖先元素进行定位,如果没有已定位的祖先元素,则相对于 body 元素进行定位,可以使用 top、right、bottom、left 属性来设置偏移量。
- `fixed`:固定定位,元素相对于浏览器窗口进行定位,不随页面滚动而滚动,可以使用 top、right、bottom、left 属性来设置偏移量。
- `sticky`:粘性定位,元素在滚动到特定位置时变为固定定位,可以使用 top、right、bottom、left 属性来设置偏移量。
? Width & Height
CSS 的 width 和 height 属性用于设置元素的宽度和高度:
- `auto`:默认值,元素的宽度或高度根据内容自适应。
- `<length>`:使用具体的长度值来设置元素的宽度或高度,如 `width: 200px;`。
- `<percentage>`:使用相对于父元素的百分比来设置元素的宽度或高度,如 `width: 50%;`。
- `inherit`:继承父元素的宽度或高度属性值。
除了这些基本用法,还可以使用其他一些属性来进一步控制元素的宽度和高度,例如:
- `max-width` 和 `max-height`:设置元素的最大宽度和最大高度,超过这个值时会自动缩小。
- `min-width` 和 `min-height`:设置元素的最小宽度和最小高度,小于这个值时会自动扩展。
- `box-sizing`:设置元素的盒模型,可以选择 `content-box`(默认值,宽度和高度只包括内容,不包括内边距和边框)或 `border-box`(宽度和高度包括内容、内边距和边框)。
- `padding` 和 `margin`:设置元素的内边距和外边距,会影响元素的实际宽度和高度。
? max- & min-
CSS 的 `max-width`、`min-width`、`max-height` 和 `min-height`
属性用于设置元素的最大宽度、最小宽度、最大高度和最小高度:
- `max-width`:设置元素的最大宽度,超过这个宽度时会自动缩小。
可以使用具体的长度值或百分比来设置,
例如: `max-width: 500px;` 或 `max-width: 80%;`。
- `min-width`:设置元素的最小宽度,小于这个宽度时会自动扩展。
可以使用具体的长度值或百分比来设置,
例如: `min-width: 200px;` 或 `min-width: 50%;`。
- `max-height`:设置元素的最大高度,超过这个高度时会自动缩小。
可以使用具体的长度值或百分比来设置,
例如: `max-height: 300px;` 或 `max-height: 60%;`。
- `min-height`:设置元素的最小高度,小于这个高度时会自动扩展。
可以使用具体的长度值或百分比来设置,
例如: `min-height: 100px;` 或 `min-height: 20%;`。
? Border
CSS `border` 属性用于设置 HTML 元素的边框样式、宽度和颜色:
- `border-style`: 设置边框样式,如 `solid`、`dotted`、`dashed`、`double`、`groove`、`ridge`、`inset`、`outset` 或 `none`。
- `border-width`: 设置边框宽度,如 `thin`、`medium`、`thick` 或具体的像素值。
- `border-color`: 设置边框颜色,如颜色名称、十六进制值或 RGB 值。
- `border-top`、`border-right`、`border-bottom`、`border-left`: 分别设置上、右、下、左四个方向的边框样式、宽度和颜色。
- `border-radius`: 设置边框圆角,如 `10px` 或 `50%`。
- `border-image`: 设置边框图片,如 `url(border.png) 30 30 round`。
? Z-index
`z-index` 属性用于控制元素的堆叠顺序,即控制元素在层叠上下文中的显示顺序。具体用法如下:
1. 设置元素的 `z-index` 值,值越大,元素越靠近顶部,即显示在其他元素的上方。
.element {
z-index: 10;
}
2. 创建新的层叠上下文,通过设置 `position` 属性为 `relative`、`absolute` 或 `fixed` 来创建新的层叠上下文。
.element {
position: relative;
z-index: 10;
}
3. 层叠上下文的嵌套,当一个元素的子元素设置了 `z-index` 值时,子元素会在父元素的上方显示。
.parent {
position: relative;
z-index: 1;
}
.child {
position: relative;
z-index: 2;
}
注意:`z-index` 属性只对设置了 `position` 属性的元素有效。
? Overflow
`overflow` 属性用于控制元素内容溢出时的处理方式。具体用法如下:
1. `overflow: visible;`(默认值):内容不会被修剪,会呈现在元素框之外。
2. `overflow: hidden;`:内容会被修剪,并且其余内容是不可见的。
3. `overflow: scroll;`:内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
4. `overflow: auto;`:如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
注意:`overflow` 属性只对设置了固定高度或宽度的元素有效。
? CSS 伪类
CSS 伪类用于向某些选择器添加特殊的效果:
1. `:hover`:鼠标悬停在元素上时的效果。
a:hover {
color: red;
}
2. `:active`:元素被激活时的效果,通常是鼠标点击时。
button:active {
background-color: blue;
}
3. `:focus`:元素获得焦点时的效果,通常是通过 Tab 键或鼠标点击输入框等元素时。
input:focus {
border: 2px solid blue;
}
4. `:first-child`:选择元素的第一个子元素。
li:first-child {
font-weight: bold;
}
5. `:last-child`:选择元素的最后一个子元素。
li:last-child {
margin-bottom: 0;
}
6. `:nth-child(n)`:选择元素的第 n 个子元素。
li:nth-child(2) {
color: red;
}
7. `:nth-of-type(n)`:选择元素的第 n 个指定类型的子元素。
p:nth-of-type(2) {
font-size: 20px;
}
8. `:not(selector)`:选择不匹配指定选择器的元素。
:not(.special) {
color: blue;
}
? CSS 伪元素
CSS 伪元素用于向某些选择器添加特殊的效果,
它们可以创建一些不在文档树中的元素,并为其添加样式:
1. `::before`:在元素的内容前面插入一个元素。
p::before {
content: "前缀:";
font-weight: bold;
}
2. `::after`:在元素的内容后面插入一个元素。
p::after {
content: "后缀。";
font-style: italic;
}
3. `::first-letter`:选择元素的第一个字母。
p::first-letter {
font-size: 24px;
font-weight: bold;
}
4. `::first-line`:选择元素的第一行。
p::first-line {
font-size: 18px;
font-weight: bold;
}
5. `::selection`:选择元素中被用户选中的部分。
::selection {
background-color: yellow;
color: black;
}
? Flexbox
Flexbox 是一种用于布局的 CSS3 属性,它可以使元素在容器中按照一定的规则排列:
1. `display: flex;`:将容器设置为 Flexbox 布局。
.container {
display: flex;
}
2. `flex-direction: row/column;`:设置主轴的方向,即元素的排列方向。
.container {
flex-direction: row; /* 默认值 */
}
.container {
flex-direction: column;
}
3. `justify-content: flex-start/center/flex-end/space-between/space-around;`:设置主轴上的对齐方式。
.container {
justify-content: flex-start; /* 默认值 */
}
.container {
justify-content: center;
}
.container {
justify-content: flex-end;
}
.container {
justify-content: space-between;
}
.container {
justify-content: space-around;
}
4. `align-items: stretch/flex-start/center/flex-end/baseline;`:设置交叉轴上的对齐方式。
.container {
align-items: stretch; /* 默认值 */
}
.container {
align-items: flex-start;
}
.container {
align-items: center;
}
.container {
align-items: flex-end;
}
.container {
align-items: baseline;
}
5. `flex-wrap: nowrap/wrap/wrap-reverse;`:设置元素是否换行。
.container {
flex-wrap: nowrap; /* 默认值 */
}
.container {
flex-wrap: wrap;
}
.container {
flex-wrap: wrap-reverse;
}
6. `flex-grow: number;`:设置元素的放大比例。
.item {
flex-grow: 1;
}
7. `flex-shrink: number;`:设置元素的缩小比例。
.item {
flex-shrink: 1;
}
8. `flex-basis: length/initial/auto;`:设置元素在主轴上的初始大小。
.item {
flex-basis: 100px;
}
? Grid
CSS Grid 是一种用于布局的 CSS3 属性,它可以将元素划分为行和列,从而创建复杂的布局:
1. `display: grid;`:将容器设置为 Grid 布局。
.container {
display: grid;
}
2. `grid-template-columns: value;`:设置列的大小和数量。
.container {
grid-template-columns: 100px 100px 100px; /* 三列,每列宽度为 100px */
}
3. `grid-template-rows: value;`:设置行的大小和数量。
.container {
grid-template-rows: 100px 100px 100px; /* 三行,每行高度为 100px */
}
4. `grid-template-areas: value;`:设置区域的名称。
.container {
grid-template-areas:
"header header header"
"sidebar content content"
"footer footer footer";
}
5. `grid-column-start/end: value;`:设置元素的列起始和结束位置。
.item {
grid-column-start: 1;
grid-column-end: 3; /* 元素跨越两列 */
}
6. `grid-row-start/end: value;`:设置元素的行起始和结束位置。
.item {
grid-row-start: 1;
grid-row-end: 3; /* 元素跨越两行 */
}
7. `grid-area: value;`:设置元素的区域名称。
.item {
grid-area: content;
}
8. `grid-gap: value;`:设置行和列之间的间距。
.container {
grid-gap: 10px; /* 行和列之间的间距为 10px */
}
? Transitions
CSS Transitions 属性用于在元素从一种样式逐渐变为另一种样式时添加动画效果:
1. `transition-property: value;`:设置要过渡的 CSS 属性。
.box {
transition-property: background-color;
}
2. `transition-duration: value;`:设置过渡的持续时间。
.box {
transition-duration: 1s;
}
3. `transition-timing-function: value;`:设置过渡的时间函数。
.box {
transition-timing-function: ease-in-out;
}
4. `transition-delay: value;`:设置过渡的延迟时间。
.box {
transition-delay: 0.5s;
}
? Animation
CSS Animation 属性用于创建动画效果,它可以让元素从一种样式逐渐变为另一种样式:
1. `animation-name: value;`:设置动画的名称。
.box {
animation-name: example;
}
2. `animation-duration: value;`:设置动画的持续时间。
.box {
animation-duration: 2s;
}
3. `animation-timing-function: value;`:设置动画的时间函数。
.box {
animation-timing-function: ease-in-out;
}
4. `animation-delay: value;`:设置动画的延迟时间。
.box {
animation-delay: 0.5s;
}
5. `animation-iteration-count: value;`:设置动画的播放次数。
.box {
animation-iteration-count: infinite; /* 无限循环 */
}
6. `animation-direction: value;`:设置动画的播放方向。
.box {
animation-direction: alternate; /* 往返播放 */
}
7. `animation-fill-mode: value;`:设置动画结束后元素的样式。
.box {
animation-fill-mode: forwards; /* 保持最后一帧的样式 */
}
8. `@keyframes`:定义动画的关键帧。
@keyframes example {
0% {
transform: scale(1);
}
50% {
transform: scale(1.5);
}
100% {
transform: scale(1);
}
}
? Media Queries
CSS Media Queries 属性用于根据设备的特性(如屏幕宽度、高度、方向等)来应用不同的样式:
1. `@media screen and (max-width: value) { ... }`:设置屏幕宽度小于某个值时应用的样式。
@media screen and (max-width: 768px) {
body {
font-size: 16px;
}
}
2. `@media screen and (min-width: value) { ... }`:设置屏幕宽度大于某个值时应用的样式。
@media screen and (min-width: 768px) {
body {
font-size: 18px;
}
}
3. `@media screen and (orientation: value) { ... }`:设置屏幕方向为横向或纵向时应用的样式。
@media screen and (orientation: landscape) {
body {
background-color: #f0f0f0;
}
}
4. `@media screen and (resolution: value) { ... }`:设置屏幕分辨率大于某个值时应用的样式。
@media screen and (resolution: 300dpi) {
body {
font-size: 20px;
}
}
掌握这些 CSS 属性只是成为一名 CSS 大神的第一步。在实际开发中,你还需要不断学习和探索新的 CSS 特性和技巧,以应对不同的需求和挑战。希望本文能够为你提供一些帮助和启示,让你在 CSS 的世界中越走越远!
? 以上就是今天为大家带来的分享!
? 如果文章对你有益;
? 请记得【评论、收藏、转发、点赞】!
? 创作不易,且读且珍惜,喜欢我的文章;
? 喜欢我的文章,记得添加【关注】哦!
? 再次感谢您的阅读。
? 长按【点赞】会有惊喜哦!?
~End~
相关推荐
- 如何用Java还原童年回忆?在线教你完成贪吃蛇小游戏
-
今天我就从零开始来完成这个小游戏,完成的方式也是一步一步的添加功能这样的方式来实现。额,不好意思,放错了,重来第一步完成的功能:写一个界面大家见到的贪吃蛇小游戏,界面肯定是少不了的。因此,第一步就是写...
- 金士顿Canvas Go!Plus microSD卡评测 4K影像轻松驾驭
-
【ZOL中关村在线原创评测】如今,视频已经成为社交媒体的主流内容传播形式,全民自媒体时代更是让昔日被视为高端、专业的视频拍摄,走进大众的生活。同时,无人机、运动相机等新世代影像设备也已经支持了4K视频...
- 国外顶尖教程大师教你设计一个炫酷游戏海报...
-
今天的教程很实用,我想对于做网页设计的童鞋肯定非常想学会用Photoshop的合成技巧来制作高端的游戏网站我们将用很多素材和照片来合成一个场景和一些页头和导航的制作。过程需要很长时间,素材也很多,我自...
- Excel 制作贪吃蛇游戏,让你轻松摸鱼!
-
步骤1:准备工作表1.创建游戏区域:o在单元格区域(如B2:AK30)设置一个矩形区域,调整行高和列宽为正方形(如行高20像素,列宽3字符)。o设置背景色为深色(如黑色),作为游戏画布。2.初...
- 成长的画布,绘满童趣色彩
-
在万家丽热闹的脉动中,特步童装是一方柔软的画布,等待孩子们用欢笑与奔跑泼洒斑斓色彩。这里没有生硬的商业气息,每一件衣物都像会呼吸的精灵,悄悄诉说着关于童年的奇妙物语。漫步其中,仿佛踏入一座流动的童话森...
- 【教育高质量发展】施甸县示范小学:地面为画布 游戏“绘”出精彩童年
-
近日,施甸县示范小学积极践行“健康第一”教育理念,在寒假前夕,学校美术组教师联合部分师生完成了校园地面游戏彩绘工作。教师们以地面为画布,绘制跳格子、转盘、迷宫等游戏图案,为下学期师生15分钟课间做好了...
- 《国王的画布》Steam试玩发布 手绘风地图制作工具
-
HannesBreuer工作室制作并发行,一款手绘风地图制作工具游戏《国王的画布》Steam试玩发布,本作暂不支持中文。《国王的画布》游戏中玩家可以自定义交互式路径生成随机元素,易于调整改动。无需...
- 怪物收集RPG冒险游戏《妖之乡》7月16日正式发售
-
今日(6月18日),怪物收集RPG冒险游戏《妖之乡》更新发售日消息,该作将于7月16日发售,游戏试玩Demo现已正式上线,感兴趣的玩家可以进入商店页面。游戏介绍:《妖之乡》是一款东方奇幻的怪物收集R...
- 208元起,育碧第一人称动作冒险游戏《阿凡达:潘多拉边境》发售
-
IT之家6月18日消息,育碧旗下第一人称动作冒险游戏《阿凡达:潘多拉边境(Avatar:FrontiersofPandora)》已于今天登陆Steam平台(点此访问),目前本作正在平台...
- 甜蜜下潜藏的疯狂?和病娇美少女《米塔》在一起的冒险解谜游戏今日发售
-
由Aihasto开发制作,IndieArk发行的冒险解谜游戏《米塔》在今日上架Steam平台进行发售。售价人民币52元,首发-10%的折扣持续14天,折扣后仅需46.8元。该作同步支持日语和俄语配音...
- 十大必玩的合作单机游戏排行
-
合作模式一直是单机游戏中的重要元素,玩家可以和朋友一起组队、配合,共同完成游戏任务。在众多的合作单机游戏中,哪些才是最值得一试的呢?本文将为大家介绍十大必玩的合作单机游戏排行。这些游戏不仅拥有精彩刺激...
- 原版20周年献礼:《战争机器:重装上阵》游戏8月26日发行
-
IT之家5月6日消息,微软官方XboxWire博客昨日(5月5日)发布博文,官宣《战争机器:重装上阵》(GearsofWar:Reloaded)游戏,将于2025年8...
- 十款免费的战斗单机游戏推荐之网络版
-
这篇文章主要介绍了十款免费的战斗单机游戏,并对它们进行了排行。这些游戏涵盖了不同类型和风格,包括角色扮演、射击、策略等。每款游戏都有详细的介绍和评价,读者可以根据自己的喜好选择适合自己的游戏。对于喜欢...
- 十大必玩的合作单机游戏:打造完美团队
-
合作模式一直是单机游戏中的重要元素,玩家可以通过合作来共同完成游戏任务,增加游戏的趣味性和挑战性。在本文中,我们将为您介绍十大必玩的合作单机游戏。这些游戏不仅拥有精彩刺激的剧情和画面,还提供了多种合作...
- 十款好玩的战斗单机游戏:哪个更好玩
-
战斗单机游戏一直是玩家们的最爱,而好玩的战斗单机游戏更是备受期待。在众多的战斗单机游戏中,哪些更好玩呢?本文将为您介绍十款备受好评的战斗单机游戏,并进行详细比较分析。无论您是喜欢动作还是策略,都能在这...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 简介 (30)
- HTML 响应式设计 (31)
- HTML URL 编码 (32)
- HTML Web 服务器 (31)
- HTML 表单属性 (32)
- HTML 音频 (31)
- HTML5 支持 (33)
- HTML API (36)
- HTML 总结 (32)
- HTML 全局属性 (32)
- HTML 事件 (31)
- HTML 画布 (32)
- HTTP 方法 (30)
- 键盘快捷键 (30)
- CSS 语法 (35)
- CSS 选择器 (30)
- CSS 轮廓宽度 (31)
- CSS 谷歌字体 (33)
- CSS 链接 (31)
- CSS 定位 (31)
- CSS 图片库 (32)
- CSS 图像精灵 (31)
- SVG 文本 (32)
- 时钟启动 (33)
- HTML 游戏 (34)