当前位置: 首页 > news >正文

【CSS】样式与效果

在这里插入图片描述

个人主页:Guiat
归属专栏:HTML CSS JavaScript

在这里插入图片描述

文章目录

  • 1. CSS盒模型
    • 1.1 盒模型基础
    • 1.2 盒模型类型
      • 1.2.1 标准盒模型
      • 1.2.2 IE盒模型
  • 2. CSS选择器
    • 2.1 基本选择器
    • 2.2 组合选择器
    • 2.3 伪类和伪元素
  • 3. CSS布局技术
    • 3.1 Flexbox布局
    • 3.2 Grid布局
    • 3.3 定位
  • 4. CSS过渡与动画
    • 4.1 过渡
    • 4.2 动画
  • 5. 响应式设计
    • 5.1 媒体查询
    • 5.2 视口单位
  • 6. CSS变量
  • 7. CSS预处理器
    • 7.1 Sass/SCSS
    • 7.2 Less
  • 8. CSS优化技巧
    • 8.1 选择器优化
    • 8.2 简写属性
    • 8.3 减少重绘和回流

正文

1. CSS盒模型

1.1 盒模型基础

盒模型是CSS布局的基础,由内容(content)、内边距(padding)、边框(border)和外边距(margin)组成。

.box {
  width: 300px;
  height: 200px;
  padding: 20px;
  border: 1px solid black;
  margin: 30px;
}

1.2 盒模型类型

1.2.1 标准盒模型

在标准盒模型中,元素的宽度和高度只包括内容区域。

.standard-box {
  box-sizing: content-box; /* 默认值 */
  width: 300px; /* 仅内容区域宽度 */
}

1.2.2 IE盒模型

在IE盒模型中,元素的宽度和高度包括内容、内边距和边框。

.ie-box {
  box-sizing: border-box;
  width: 300px; /* 包括内容区域、内边距和边框 */
}

2. CSS选择器

2.1 基本选择器

/* 元素选择器 */
p { color: blue; }

/* 类选择器 */
.highlight { background-color: yellow; }

/* ID选择器 */
#header { font-size: 24px; }

/* 通用选择器 */
* { margin: 0; padding: 0; }

2.2 组合选择器

/* 后代选择器 */
article p { line-height: 1.6; }

/* 子元素选择器 */
ul > li { list-style-type: square; }

/* 相邻兄弟选择器 */
h2 + p { font-weight: bold; }

/* 通用兄弟选择器 */
h2 ~ p { color: gray; }

2.3 伪类和伪元素

/* 伪类 */
a:hover { text-decoration: underline; }
li:first-child { font-weight: bold; }

/* 伪元素 */
p::first-line { font-variant: small-caps; }
p::before { content: "➤ "; }

3. CSS布局技术

3.1 Flexbox布局

Flexbox提供了一种更有效的方式来布局、对齐和分配容器中项目之间的空间。

.container {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.item {
  flex: 1;
  margin: 5px;
}

3.2 Grid布局

Grid布局允许开发者创建二维网格布局系统。

.grid-container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: 20px;
}

.grid-item {
  grid-column: span 2;
}

3.3 定位

CSS定位允许你精确控制元素的位置。

.relative {
  position: relative;
  top: 20px;
  left: 30px;
}

.absolute {
  position: absolute;
  top: 50px;
  right: 10px;
}

.fixed {
  position: fixed;
  bottom: 0;
  width: 100%;
}

4. CSS过渡与动画

4.1 过渡

CSS过渡允许元素在不同状态之间平滑地改变。

.button {
  background-color: blue;
  transition: background-color 0.3s ease;
}

.button:hover {
  background-color: darkblue;
}

4.2 动画

CSS动画使用@keyframes规则来创建动画序列。

@keyframes slide-in {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(0);
  }
}

.animated {
  animation: slide-in 1s ease forwards;
}

5. 响应式设计

5.1 媒体查询

媒体查询允许根据设备特性应用不同的样式。

/* 桌面设备 */
@media (min-width: 992px) {
  .container {
    width: 970px;
  }
}

/* 平板设备 */
@media (min-width: 768px) and (max-width: 991px) {
  .container {
    width: 750px;
  }
}

/* 移动设备 */
@media (max-width: 767px) {
  .container {
    width: 100%;
  }
}

5.2 视口单位

视口单位基于视口的尺寸,适合响应式设计。

.hero {
  height: 100vh; /* 视口高度的100% */
  width: 100vw; /* 视口宽度的100% */
}

.text {
  font-size: 5vw; /* 视口宽度的5% */
}

6. CSS变量

CSS变量(自定义属性)提供了在整个文档中重用值的能力。

:root {
  --primary-color: #3498db;
  --secondary-color: #2ecc71;
  --font-size-base: 16px;
}

.button {
  background-color: var(--primary-color);
  font-size: var(--font-size-base);
}

.highlight {
  color: var(--secondary-color);
}

7. CSS预处理器

7.1 Sass/SCSS

Sass为CSS添加了变量、嵌套、混合等高级功能。

$primary-color: #3498db;

.navbar {
  background-color: $primary-color;
  
  ul {
    display: flex;
    
    li {
      margin: 0 10px;
      
      a {
        color: white;
        
        &:hover {
          text-decoration: underline;
        }
      }
    }
  }
}

7.2 Less

Less是另一种流行的CSS预处理器,语法与CSS更接近。

@primary-color: #3498db;

.button {
  background-color: @primary-color;
  
  &:hover {
    background-color: darken(@primary-color, 10%);
  }
}

8. CSS优化技巧

8.1 选择器优化

/* 避免 */
body .content article .title { color: red; }

/* 推荐 */
.content-title { color: red; }

8.2 简写属性

/* 避免 */
.element {
  margin-top: 10px;
  margin-right: 20px;
  margin-bottom: 10px;
  margin-left: 20px;
}

/* 推荐 */
.element {
  margin: 10px 20px;
}

8.3 减少重绘和回流

/* 避免 */
.box {
  width: 100px;
  height: 100px;
  position: absolute;
  top: 50px;
  left: 50px;
  border: 1px solid black;
}

/* 推荐 */
.box {
  transform: translate(50px, 50px);
  width: 100px;
  height: 100px;
  position: absolute;
  border: 1px solid black;
}

结语
感谢您的阅读!期待您的一键三连!欢迎指正!

在这里插入图片描述

相关文章:

  • 前后端分离的网站怎么做怎么推广app
  • 镇江网站seo外包环球军事网
  • 做网站要学什么网络营销和网上销售的区别
  • 甜品网站设计与实现毕业设计软文营销的三个层面
  • 做网站的女生多么免费网站提交入口
  • 网站开发对算法有要求么深圳疫情防控最新消息
  • C语言之编译和debug工具
  • C++模板递归结构详解和使用
  • React中类组件的生命周期
  • 【51单片机】2-8【I/O口】数码管显示矩阵按键值
  • python通过调用海康SDK打开工业相机(全流程)
  • 论文修改时有哪些需要注意的问题?
  • Leedcode刷题 | Day23_回溯算法02
  • Latex入门之超详细的Latex下载安装教程
  • OpenCV图像处理实战全解析:镜像、缩放、矫正、水印与降噪技术详解
  • 算法设计学习10
  • React编程高级主题:错误处理(Error Handling)
  • ts基础知识总结
  • Java后端开发流程
  • [ctfshow web入门]burpsuite的下载与使用
  • 每日c/c++题 备战蓝桥杯(小球反弹)[运动分解求解,最大公约数gcd]
  • Java进阶之旅-day05:网络编程
  • 1-SQL server 2022和SSMS的使用案例1
  • 从零构建大语言模型全栈开发指南:附录与资源-2.数据集大全-公开语料库、多模态数据集与领域专用数据源
  • 构建第一个ArkTS应用:Hello World之旅
  • 【百日精通JAVA | SQL篇 | 第三篇】 MYSQL增删改查