CSS基础(浮动、相对定位、绝对定位、固定定位、粘性定位、版心、重置默认样式)

news2025/2/22 23:42:18

文章目录

  • 1. 浮动(float)
    • 1.1 简介
    • 1.2 元素浮动后的特点
    • 1.3 脱离文档流示例图
    • 1.4 浮动产生的影响
      • 1.4.1 积极影响
      • 1.4.2 消极影响
    • 1.5 解决浮动产生的影响
      • 1.5.1 清除浮动(Clearfix)
      • 1.5.2 创建新的块格式化上下文(BFC)
  • 2. 定位(position)
    • 2.1 相对定位
      • 2.1.1 如何设置相对定位
      • 2.1.2 相对定位的参考点
      • 2.1.3 相对定位的特点
    • 2.2 绝对定位
      • 2.2.1 如何确定元素的包含块
      • 2.2.2 如何设置绝对定位
      • 2.2.3 绝对定位的参考点
      • 2.2.4 绝对定位的特点
    • 2.3 固定定位
      • 2.3.1 如何设置固定定位
      • 2.3.2 固定定位的参考点
      • 2.3.3 固定定位的特点
      • 2.3.4 示例代码
    • 2.4 粘性定位
      • 2.4.1 如何设置粘性定位
      • 2.4.2 粘性定位的参考点
      • 2.4.3 粘性定位的特点
      • 2.4.4 示例代码
    • 2.5 固定定位和粘性定位的区别
    • 2.6 定位的层级
  • 3. 布局
    • 3.1 版心
      • 3.1.1 版心的概念
      • 3.1.2 创建版心的常见方法
      • 3.1.3 版心的考虑因素
    • 3.2 常用类名
      • 3.2.1 布局容器
      • 3.2.2 导航和菜单
      • 3.2.3 头部和页脚
      • 3.2.4 内容区域
      • 3.2.5 组件
      • 3.2.6 辅助类
      • 3.2.7 响应式可见性
      • 3.2.8 元素样式
    • 3.3 重置默认样式
      • 3.3.1 元素的默认样式
      • 3.3.2 如何重置默认样式

视频教程: 133_CSS_浮动_简介

1. 浮动(float)

1.1 简介

CSS浮动(float)是一种布局技术,允许元素在文档流中向左或向右移动,同时允许文本和内联元素环绕它。浮动最初被设计用来实现文本环绕图片的效果,但随着Web开发的发展,它被广泛用于整个页面的布局

1.2 元素浮动后的特点

视频教程:134_CSS_元素浮动后的特点


当一个元素被设置为浮动(使用 float 属性设置为 leftrightnone 之外的值),它会表现出以下特点:

  1. 脱离文档流:浮动元素会脱离常规的文档流,这意味着它不再占据文档流中的空间,其他元素会视它为不存在
  2. 位置移动:浮动元素会尽量向指定方向(左或右)移动,直到它的外边缘碰到包含框或另一个浮动元素的边缘
  3. 内容环绕:浮动元素周围的文本和内联元素会环绕它,形成类似报纸中图片周围环绕文字的效果
  4. 行内块化:即使是行内元素,一旦浮动,也会表现得像一个块级元素,可以设置宽度和高度

当一个元素被设置为浮动时,不会存在外边距塌陷问题,可以完美地设置四个方向的外边距

1.3 脱离文档流示例图

在这里插入图片描述

在这里插入图片描述

1.4 浮动产生的影响

布局原则:设置浮动的时候,要么兄弟元素全都浮动,要么全都不浮动

浮动在CSS布局中虽然非常有用,但它也会产生一些影响,这些影响可能是积极的也可能是消极的。以下是浮动产生的一些主要影响:

1.4.1 积极影响

  1. 布局控制:浮动允许开发者在页面上精确地控制元素的位置,这在早期的Web设计中尤其重要
  2. 文本环绕:浮动可以轻松实现文本环绕图片或其他元素的效果
  3. 多列布局:浮动可以用来创建多列布局,这在CSS Grid和Flexbox出现之前是常见的做法

1.4.2 消极影响

  1. 高度塌陷:浮动元素的父元素不会自动伸展以包含浮动元素,这可能导致父元素的高度塌陷
  2. 容器溢出:如果浮动元素的总宽度超过了其父容器的宽度,它们可能会溢出容器,导致布局混乱
  3. 内容重叠:浮动元素可能会覆盖其后的非浮动内容,除非使用适当的清除浮动技术
  4. 需要清除浮动:为了防止高度塌陷和其他布局问题,通常需要在浮动元素之后添加清除浮动的元素或使用CSS伪元素来清除浮动

1.5 解决浮动产生的影响

1.5.1 清除浮动(Clearfix)

为了解决高度塌陷问题,可以使用清除浮动技术。以下是一些常用的清除浮动的方法:

额外标签法:在浮动元素之后添加一个空的<div>标签,并给它设置clear: both;属性

<div class="clearfix"></div>
.clearfix {
  clear: both;
}

伪元素法:使用:after伪元素在浮动元素的父容器上添加一个清除浮动的块

.clearfix:after {
  content: "";
  display: table;
  clear: both;
}

1.5.2 创建新的块格式化上下文(BFC)

通过在父容器上设置某些CSS属性,可以创建一个新的块格式化上下文,这样浮动元素就会被包含在父容器内

overflow:设置overflow: auto;overflow: hidden;

.container {
  overflow: hidden; /* 或者 auto */
}

2. 定位(position)

2.1 相对定位

2.1.1 如何设置相对定位

要设置相对定位,你需要对元素使用CSS的position属性,并将其值设置为relative。然后,你可以使用toprightbottomleft属性来指定元素相对于其原始位置的偏移量

/* CSS样式 */
.element {
  position: relative; /* 设置相对定位 */
  top: 20px;       /* 向下移动20像素 */
  left: 30px;      /* 向右移动30像素 */
}
<!-- HTML结构 -->
<div class="element">这是一个相对定位的元素。</div>

2.1.2 相对定位的参考点

相对定位的参考点是元素在文档流中的原始位置,即如果没有应用position: relative;时的位置。这意味着当你使用toprightbottomleft属性来移动元素时,它们是相对于元素的原始位置进行计算的

2.1.3 相对定位的特点

  1. 位置偏移
    • 元素可以相对于其正常位置进行上下左右移动
    • 偏移属性(toprightbottomleft)用来指定移动的具体距离
  2. 文档流
    • 相对定位的元素仍然占据其在文档流中的原始空间。即使元素被移动了,它原来的位置仍然保留,不会被其他元素占据(只有视觉效果上的变化)
    • 相对定位不会改变元素在文档流中的位置,这意味着它不会影响其他元素的位置
  3. 层叠上下文
    • 相对定位不会创建一个新的层叠上下文,除非你为元素指定了z-index
    • 没有设置z-index的情况下,相对定位的元素仍然在原来的层叠上下文中,它的层叠顺序不会改变
  4. 显示层级
    • 设置了相对定位的元素会盖在普通元素之上
    • 都设置了相对定位的两个元素,后写的元素会盖在先写的元素之上

2.2 绝对定位

视频教程:140_CSS_绝对定位

2.2.1 如何确定元素的包含块

  • 一个元素的包含块就是离这个元素最近的块级祖先元素
  • 对于没有祖先元素的元素,初始包含块通常是 viewport(视口)

2.2.2 如何设置绝对定位

要设置绝对定位,你需要对元素使用CSS的position属性,并将其值设置为absolute。然后,你可以使用toprightbottomleft属性来指定元素相对于其包含块的位置

/* CSS样式 */
.parent {
  position: relative; /* 确保有一个相对定位的包含块 */
}
.element {
  position: absolute; /* 设置绝对定位 */
  top: 20px;       /* 距离包含块顶部20像素 */
  right: 30px;     /* 距离包含块右侧30像素 */
}
<!-- HTML结构 -->
<div class="parent">
  <div class="element">这是一个绝对定位的元素。</div>
</div>

2.2.3 绝对定位的参考点

绝对定位的参考点是最近的已定位祖先元素(即设置了position属性为relativeabsolutefixed的祖先元素)。如果没有已定位的祖先元素,那么参考点将是<html>元素,即初始包含块

2.2.4 绝对定位的特点

  1. 位置偏移
    • 元素的位置可以通过toprightbottomleft属性相对于其包含块进行偏移
    • 绝对定位的元素完全脱离了文档流,不再占据文档流中的空间
  2. 文档流
    • 绝对定位的元素会脱离文档流,这意味着它原来的位置不会被保留,其他元素也不会为其保留空间
    • 绝对定位的元素可以覆盖文档流中的其他元素,也可以被其他元素覆盖
  3. 层叠上下文
    • 绝对定位的元素会创建一个新的层叠上下文
    • z-index属性可以用来控制绝对定位元素的堆叠顺序,即使没有显式设置z-index,绝对定位的元素也会在文档流中的元素之上

2.3 固定定位

2.3.1 如何设置固定定位

要设置固定定位,你需要对元素使用CSS的position属性,并将其值设置为fixed。然后,你可以使用toprightbottomleft属性来指定元素相对于视口(viewport)的位置

/* CSS样式 */
.element {
  position: fixed; /* 设置固定定位 */
  top: 0;         /* 距离视口顶部0像素 */
  right: 0;       /* 距离视口右侧0像素 */
}

2.3.2 固定定位的参考点

固定定位的参考点是视口(viewport),这意味着元素是相对于浏览器窗口进行定位的,而不是相对于文档流或任何其他元素。当页面滚动时,固定定位的元素会保持在相同的位置

2.3.3 固定定位的特点

  1. 位置偏移
    • 元素的位置是相对于视口进行偏移的,即使页面滚动,元素也会保持在视口中的相同位置
    • toprightbottomleft属性用于确定元素在视口中的具体位置
  2. 文档流
    • 固定定位的元素会脱离文档流,它原来的位置不会被保留,也不会影响其他元素的位置
    • 由于固定定位的元素总是相对于视口定位,它不会随着页面内容的滚动而移动
  3. 层叠上下文
    • 固定定位的元素会创建一个新的层叠上下文
    • z-index属性可以用来控制固定定位元素的堆叠顺序,即使没有显式设置z-index,固定定位的元素也会在文档流中的元素之上

2.3.4 示例代码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>固定定位</title>
  <style>
      * {
          margin: 0;
          padding: 0;
          box-sizing: border-box;
          font-family: "Microsoft YaHei", sans-serif;
      }

      /* 固定导航栏 */
      .main-nav {
          position: fixed;
          top: 0;
          left: 0;
          width: 100%;
          background: rgba(255, 255, 255, 0.98);
          padding: 1rem 5%;
          display: flex;
          justify-content: space-between;
          align-items: center;
          box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
          z-index: 1000;
      }

      .nav-logo {
          width: 180px;
          transition: all 0.3s;
      }

      .nav-menu {
          display: flex;
          gap: 2.5rem;
      }

      .nav-menu a {
          text-decoration: none;
          color: #333;
          font-weight: 500;
          transition: color 0.3s;
      }

      /* 固定侧边联系栏 */
      .contact-sidebar {
          position: fixed;
          right: 2rem;
          top: 50%;
          transform: translateY(-50%);
          background: #fff;
          padding: 1.5rem;
          border-radius: 12px;
          box-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);
          z-index: 999;
      }

      /* 固定返回顶部按钮 */
      .back-to-top {
          position: fixed;
          bottom: 2rem;
          right: 2rem;
          background: #0066cc;
          color: white;
          width: 45px;
          height: 45px;
          border-radius: 50%;
          display: flex;
          align-items: center;
          justify-content: center;
          cursor: pointer;
          opacity: 0.9;
          transition: all 0.3s;
      }

      /* 页面主要内容 */
      .hero-section {
          height: 100vh;
          background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
          padding-top: 6rem;
          display: flex;
          align-items: center;
      }

      .case-showcase {
          display: grid;
          grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
          gap: 2rem;
          padding: 4rem 5%;
      }

      .case-card {
          background: white;
          border-radius: 12px;
          overflow: hidden;
          box-shadow: 0 3px 12px rgba(0, 0, 0, 0.1);
          transition: transform 0.3s;
      }

      .case-card:hover {
          transform: translateY(-5px);
      }

      /* 响应式设计 */
      @media (max-width: 768px) {
          .contact-sidebar {
              display: none;
          }

          .nav-menu {
              gap: 1.5rem;
          }
      }
  </style>
</head>
<body>
<!-- 固定导航栏 -->
<nav class="main-nav">
  <img src="logo.png" alt="天工智能科技" class="nav-logo">
  <div class="nav-menu">
    <a href="#home">首页</a>
    <a href="#products">产品中心</a>
    <a href="#solutions">行业解决方案</a>
    <a href="#cases">成功案例</a>
    <a href="#about">关于我们</a>
  </div>
</nav>

<!-- 固定侧边联系栏 -->
<div class="contact-sidebar">
  <h3>快速联系</h3>
  <p>400-800-1234</p>
  <p>sales@tiangongtech.com</p>
  <button>在线咨询</button>
</div>

<!-- 页面主要内容 -->
<section class="hero-section">
  <!-- 此处放置轮播图等复杂内容 -->
</section>

<section class="case-showcase">
  <div class="case-card">
    <h3>智能制造解决方案</h3>
    <p>为汽车制造企业实现生产流程全面数字化改造,生产效率提升40%</p>
  </div>
  <div class="case-card">
    <h3>智慧能源管理</h3>
    <p>帮助电力集团建立智能监测系统,年节约运维成本1200万元</p>
  </div>
  <div class="case-card">
    <h3>工业物联网平台</h3>
    <p>为装备制造企业搭建设备互联平台,设备利用率提升25%</p>
  </div>
</section>

<!-- 固定返回顶部按钮 -->
<div class="back-to-top"></div>

<script>
  // 滚动时导航栏阴影变化
  window.addEventListener('scroll', () => {
    const nav = document.querySelector('.main-nav');
    if (window.scrollY > 100) {
      nav.style.boxShadow = '0 4px 15px rgba(0,0,0,0.12)';
    } else {
      nav.style.boxShadow = '0 2px 10px rgba(0,0,0,0.1)';
    }
  });

  // 返回顶部功能
  document.querySelector('.back-to-top').addEventListener('click', () => {
    window.scrollTo({
      top: 0,
      behavior: 'smooth'
    });
  });
</script>
</body>
</html>

2.4 粘性定位

2.4.1 如何设置粘性定位

要设置粘性定位,你需要对元素使用CSS的position属性,并将其值设置为sticky。然后,你可以使用toprightbottomleft属性来指定元素在滚动到特定位置时粘附的位置

/* CSS样式 */
.sticky-element {
  position: sticky; /* 设置粘性定位 */
  top: 0;          /* 当元素滚动到视口顶部0像素的位置时粘附 */
}

2.4.2 粘性定位的参考点

粘性定位的参考点是最近的具有滚动机制的祖先元素(滚动容器)。如果祖先元素没有设置overflow属性或者设置了overflow: visible,那么粘性定位将相对于视口起作用

2.4.3 粘性定位的特点

  1. 位置偏移
    • 粘性定位的元素在滚动到指定位置之前,表现得就像position: static(静态定位)
    • 当元素滚动到指定的toprightbottomleft位置时,它会表现得像position: fixed(固定定位),即粘附在指定位置,但不会脱离文档流
  2. 文档流
    • 在粘性定位生效之前,元素保留在文档流中的位置
    • 当粘性定位生效时,元素会相对于其最近的滚动祖先粘附,但它不会脱离文档流,这意味着它会保留其原始空间
  3. 层叠上下文
    • 粘性定位的元素不会创建一个新的层叠上下文,除非它已经是层叠上下文的一部分
    • 当元素处于粘性状态时,它可能会覆盖其他元素,但它的z-index行为与普通文档流中的元素相同

2.4.4 示例代码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>粘性定位</title>
  <style>
      body {
          font-family: 'Arial', sans-serif;
          line-height: 1.6;
          margin: 0;
          padding: 0;
          background-color: #f9f9f9; /* Light grey background */
          color: #333; /* Dark text color */
      }

      .header {
          background-color: #4CAF50; /* Green header */
          color: #ffffff;
          text-align: center;
          padding: 1em 0;
      }

      .container {
          display: flex;
          max-width: 1200px;
          margin: 20px auto;
          padding: 20px;
          background-color: #ffffff;
          box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
      }

      .content {
          flex: 1;
          padding-right: 30px;
      }

      .sidebar {
          width: 200px;
          position: sticky;
          top: 20px;
          background-color: #e7e7e7; /* Light grey sidebar */
          padding: 20px;
          border-radius: 5px;
      }

      .sidebar ul {
          list-style: none;
          padding: 0;
      }

      .sidebar ul li {
          padding: 10px;
          background-color: #d4edda; /* Success light */
          margin-bottom: 5px;
          border: 1px solid #c3e6cb;
          border-radius: 3px;
      }

      .sidebar ul li a {
          text-decoration: none;
          color: #333;
      }

      .sidebar ul li a:hover {
          color: #007bff; /* Blue hover color */
      }

      .post {
          margin-bottom: 40px;
      }

      .post h2 {
          margin-bottom: 10px;
          color: #333; /* Darker heading color */
      }

      .post p {
          margin-bottom: 10px;
          color: #555; /* Slightly lighter text color */
      }

      pre {
          background-color: #f4f4f4; /* Code block background */
          padding: 10px;
          border-radius: 5px;
          overflow-x: auto;
      }

      code {
          color: #d63200; /* Orange code color */
      }

      .footer {
          text-align: center;
          padding: 1em 0;
          background-color: #4CAF50; /* Same as header */
          color: white;
          margin-top: 20px;
      }
  </style>
</head>
<body>
<div class="header">
  <h1>深入了解CSS中的粘性定位</h1>
</div>
<div class="container">
  <div class="content">
    <article class="post">
      <h1>如何使用粘性定位提升用户体验</h1>
      <aside class="sidebar">
        <h3>文章目录</h3>
        <ul>
          <li><a href="#introduction">简介</a></li>
          <li><a href="#sticky-position">粘性定位是什么</a></li>
          <li><a href="#usage">如何使用粘性定位</a></li>
          <li><a href="#browser-support">浏览器支持情况</a></li>
          <li><a href="#conclusion">总结</a></li>
        </ul>
      </aside>
      <section id="introduction">
        <h2>简介</h2>
        <p>粘性定位是一种CSS布局技术,可以让元素在页面滚动到特定位置时“粘”在屏幕上[ty-reference](1)。</p>
        <p>这种技术可以极大地改善用户的浏览体验,特别是在长页面中,如博客文章或产品详情页。</p>
      </section>
      <section id="sticky-position">
        <h2>粘性定位是什么</h2>
        <p>粘性定位(position:
          sticky)是一种结合了相对定位和固定定位的特性,元素在滚动到其指定位置之前表现为相对定位,之后则表现为固定定位[ty-reference](15)。</p>
        <p>例如,一个侧边栏可以在用户向下滚动时跟随屏幕,直到达到设定的阈值,然后保持固定位置。</p>
      </section>
      <section id="usage">
        <h2>如何使用粘性定位</h2>
        <p>
          要使用粘性定位,只需在CSS中设置position属性为sticky,并指定top、right、bottom或left属性中的一个[ty-reference](15)。</p>
        <p>例如:</p>
        <pre><code>.sticky-element {
  position: sticky;
  top: 0;
}</code></pre>
        <p>上述代码会使.sticky-element类下的元素在页面滚动至顶部时固定不动。</p>
      </section>
      <section id="browser-support">
        <h2>浏览器支持情况</h2>
        <p>
          粘性定位在现代浏览器中得到了广泛支持,包括Chrome、Firefox、Safari和Edge[ty-reference](16)。然而,在一些旧版本的浏览器中可能需要额外的JavaScript补丁来实现类似的效果。</p>
      </section>
      <section id="conclusion">
        <h2>总结</h2>
        <p>
          粘性定位是一个强大的工具,可以用来改善用户的滚动体验,使导航元素或其他重要信息始终在视图中[ty-reference](15)。通过合理利用这一特性,开发者能够创建更加动态和用户友好的网页设计。</p>
      </section>
    </article>
  </div>
</div>
<div class="footer">
  <p>&copy; 2025 粘性定位学习网站 版权所有</p>
</div>
</body>
</html>

2.5 固定定位和粘性定位的区别

固定定位(position: fixed;):

  1. 相对于视口定位:固定定位的元素总是相对于视口进行定位,即使页面滚动,元素也会保持在相同的位置
  2. 脱离文档流:固定定位的元素会脱离常规文档流,这意味着它不会占据文档中的空间,也不会对其他元素的位置产生影响
  3. 创建层叠上下文:固定定位的元素会创建一个新的层叠上下文,这可能会影响元素的层叠顺序
  4. 浏览器支持:固定定位在所有现代浏览器中都得到良好支持

粘性定位(position: sticky;):

  1. 相对于滚动容器定位:粘性定位的元素在滚动到指定位置之前表现得像相对定位(position: relative;),当达到指定的toprightbottomleft位置时,它会表现得像固定定位,但它是相对于最近的滚动祖先元素进行定位的
  2. 不脱离文档流:粘性定位的元素在滚动到指定位置之前会保留在文档流中的位置,并且在粘性定位生效时也不会脱离文档流
  3. 不创建层叠上下文:默认情况下,粘性定位的元素不会创建一个新的层叠上下文,除非它已经是层叠上下文的一部分
  4. 浏览器支持:粘性定位在大多数现代浏览器中得到支持,但在一些旧版浏览器中可能不受支持

2.6 定位的层级

在CSS中,定位的层级是由z-index属性控制的。z-index属性用于指定一个元素在垂直于屏幕的方向(即Z轴)上的堆叠顺序。具有较高z-index值的元素将覆盖具有较低z-index值的元素

  1. 定位类型
    • 相对定位(relative):元素相对于其正常位置进行定位,但不脱离文档流
    • 绝对定位(absolute):元素脱离文档流,相对于最近的已定位祖先元素进行定位
    • 固定定位(fixed):元素脱离文档流,相对于浏览器窗口进行定位
    • 粘性定位(sticky):元素在达到某个位置前保持相对定位,达到后变为固定定位
  2. z-index属性
    • z-index可以取正值、负值或0
    • 默认情况下,所有元素的z-indexauto,相当于0
    • z-index仅在定位元素上有效(即position为relative、absolute、fixed或sticky的元素)
  3. 堆叠上下文
    • 堆叠上下文是HTML元素的一个属性,决定了其子元素的堆叠顺序
    • 创建堆叠上下文的条件包括:定位属性为非static、z-index不为auto、opacity小于1、transform不为none等
    • 在同一个堆叠上下文中,z-index值高的元素会覆盖值低的元素
    • 不同堆叠上下文之间的元素,堆叠顺序由各自堆叠上下文的根元素决定
  4. 注意事项
    • z-index只在同一父元素下的定位元素之间起作用
    • 如果两个元素在同一堆叠上下文中,且z-index相同,则后出现在HTML代码中的元素将覆盖先出现的元素

3. 布局

3.1 版心

视频教程:145_CSS_布局_版心

3.1.1 版心的概念

在CSS布局中,“版心”(或称为"内容区域"、“容器”)通常指的是网页中主要内容的中心区域,这个区域通常包含网站的核心内容,并且在不同设备上保持一致的外观和布局。版心的设计对于创建响应式和一致性的用户体验至关重要

3.1.2 创建版心的常见方法

固定宽度版心

.container {
  width: 1200px; /* 或其他固定像素值 */
  margin: 0 auto; /* 水平居中 */
  padding: 20px;
}

流式宽度版心

.container {
  max-width: 1200px; /* 最大宽度 */
  min-width: 320px; /* 最小宽度,适应小屏幕设备 */
  margin: 0 auto; /* 水平居中 */
  padding: 20px;
  box-sizing: border-box; /* 包含padding和border在内的宽度 */
}

使用CSS网格或Flexbox

.container {
  display: grid; /* 或flex */
  grid-template-columns: 1fr minmax(320px, 1200px) 1fr; /* 网格布局 */
  /* Flexbox布局 */
  /* display: flex; */
  /* justify-content: center; */
  /* align-items: center; */
}
.container > * {
  grid-column: 2; /* 将子元素放置在中心列 */
}

响应式版心:使用媒体查询来适应不同屏幕尺寸

.container {
  width: 100%;
  max-width: 1200px;
  margin: 0 auto;
  padding: 20px;
  box-sizing: border-box;
}

@media (max-width: 768px) {
  .container {
    padding: 10px;
  }
}

3.1.3 版心的考虑因素

  • 边距(Margin):通常使用margin: 0 auto;来使版心在视口中水平居中
  • 内边距(Padding):为版心添加内边距,以避免内容紧贴边缘,提高可读性
  • 最大宽度和最小宽度:设置最大宽度以避免版心在宽屏设备上过于展开,设置最小宽度以适应小屏幕设备
  • 盒模型:使用box-sizing: border-box;确保元素的padding和border不会增加其宽度
  • 响应式设计:使用媒体查询来调整版心的尺寸和布局,以适应不同的屏幕尺寸和设备

3.2 常用类名

3.2.1 布局容器

类名描述
.container布局容器,用于固定宽度或最大宽度
.row行布局容器
.column列布局

3.2.2 导航和菜单

类名描述
.navbar导航栏
.menu主菜单
.submenu子菜单
.topbar顶部导航条
.breadcrumb面包屑导航
.sidebar侧边栏菜单

3.2.3 头部和页脚

类名描述
.header页面头部区域
.footer页面底部区域

3.2.4 内容区域

类名描述
.content主内容区域
.main主要内容区域
.article文章或帖子内容
.section页面独立部分
.widget小部件或插件区域

3.2.5 组件

类名描述
.card卡片式布局组件
.thumbnail缩略图组件
.carousel轮播图组件
.modal模态框或弹出窗口
.dropdown下拉菜单
.accordion手风琴组件

3.2.6 辅助类

类名描述
.clearfix清除浮动的辅助类
.pull-left元素左浮动
.pull-right元素右浮动

3.2.7 响应式可见性

类名描述
.visible-xs在超小屏幕上可见
.visible-sm在小屏幕上可见
.visible-md在中等屏幕上可见
.visible-lg在大屏幕上可见
.hidden-xs在超小屏幕上隐藏
.hidden-sm在小屏幕上隐藏
.hidden-md在中等屏幕上隐藏
.hidden-lg在大屏幕上隐藏

3.2.8 元素样式

类名描述
.btn按钮
.alert警告或通知消息
.pagination分页导航
.badge徽章或标签
.progress进度条

3.3 重置默认样式

视频教程:147_CSS_布局_重置默认样式


3.3.1 元素的默认样式

元素的默认样式是由浏览器提供的,这些样式通常被称为用户代理样式(User Agent Stylesheet)。不同的浏览器可能会有不同的默认样式,但许多样式是通用的。以下是一些常见HTML元素的默认样式:

块级元素(如<div><p><h1>-<h6><ul><ol><li>等)通常具有以下默认样式:

  • margin:某些元素(如<p><h1>-<h6>)具有默认的外边距
  • padding:某些元素(如<ul><li>)具有默认的内边距
  • display:设置为block

内联元素(如<span><a><strong><em>等)通常具有以下默认样式:

  • display:设置为inline
  • marginpadding:通常较小或不存在

表格元素(如<table><tr><td>等)通常具有以下默认样式:

  • border-collapse:默认为separate,导致边框之间有间隔
  • border-spacing:默认为2px
  • vertical-align<td>元素默认为middle

表单元素(如<input><button><select>等)通常具有以下默认样式:

  • font-family:继承自父元素
  • font-size:通常较小
  • border:默认有边框样式

3.3.2 如何重置默认样式

为了确保跨浏览器的一致性,开发者通常会重置或标准化元素的默认样式。以下是几种方法:

  1. 使用CSS Reset

    • 全局重置:将所有元素的marginpaddingborder等设置为0,并重置其他样式属性
    • 更温和的Reset:某些开发者倾向于使用更温和的reset方法,只重置那些最有可能引起问题的样式
  2. 使用Normalize.css

    • Normalize.css是一个现代的、CSS reset的替代方案,它保留了有用的默认样式而不是完全重置它们
    • 它修复了浏览器的bug和不一致性,而不是完全去掉默认样式
  3. 自定义样式表

    • 开发者可以创建自己的样式表,只针对特定元素和问题进行样式重置

以下是重置某些元素默认样式的简单示例:

/* 重置块级元素的外边距和内边距 */
h1, h2, h3, h4, h5, h6, p, ul, ol, li, blockquote, pre, form, dl, dd {
  margin: 0;
  padding: 0;
}
/* 重置表格元素的边框间隔和边框折叠 */
table {
  border-collapse: collapse;
  border-spacing: 0;
}
/* 重置表单元素的样式 */
input, select, textarea {
  margin: 0;
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}
/* 重置按钮元素的样式 */
button {
  overflow: visible;
  border: none;
  background: none;
  cursor: pointer;
}
/* 重置列表元素的样式 */
ul, ol {
  list-style: none;
}

通过重置元素的默认样式,开发者可以确保在不同的浏览器中,他们的网站或应用看起来是一致的,并且可以更精确地控制布局和设计

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

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

相关文章

Spring Cloud — Hystrix 服务隔离、请求缓存及合并

Hystrix 的核心是提供服务容错保护&#xff0c;防止任何单一依赖耗尽整个容器的全部用户线程。使用舱壁隔离模式&#xff0c;对资源或失败单元进行隔离&#xff0c;避免一个服务的失效导致整个系统垮掉&#xff08;雪崩效应&#xff09;。 1 Hystrix监控 Hystrix 提供了对服务…

RagFlow+Ollama 构建RAG私有化知识库

RagFlowOllama 构建RAG私有化知识库 关于RAG一、什么是RAGFlow一、RAGFlow 安装配置测服已有服务&#xff1a; mysql、redis、elasticsearch 二、RAGFlow 配置 ollama&#xff1a;本地运行大型语言模型的工具软件。用户可以轻松下载、运行和管理各种开源 LLM。降低使用门槛&…

【Linux】【网络】不同子网下的客户端和服务器通信

【Linux】【网络】不同子网下的客户端和服务器通信 前两天在进行socket()网络编程并进行测试时&#xff0c;发现在不同wifi下两个电脑无法进行连接&#xff0c;大概去查找了如何解决 看到可以使用 frp 这个快速反向代理实现。 frp 可让您将位于 NAT 或防火墙后面的本地服务器…

SpringBoot教程(十四) SpringBoot之集成Redis

SpringBoot教程&#xff08;十四&#xff09; | SpringBoot之集成Redis 一、Redis集成简介二、集成步骤 2.1 添加依赖2.2 添加配置2.3 项目中使用之简单使用 &#xff08;举例讲解&#xff09;2.4 项目中使用之工具类封装 &#xff08;正式用这个&#xff09;2.5 序列化 &…

OpenHarmony分布式数据管理子系统

OpenHarmony分布式数据管理子系统 简介 目录 组件说明 分布式数据对象数据共享分布式数据服务Key-Value数据库首选项关系型数据库标准数据化通路 相关仓 简介 子系统介绍 分布式数据管理子系统支持单设备的各种结构化数据的持久化&#xff0c;以及跨设备之间数据的同步、…

单片机 Bootloade与二进制文件的生成

单片机的 Bootloader 是一种特殊的程序&#xff0c;负责在单片机上电后初始化硬件、更新用户应用程序&#xff08;固件&#xff09;&#xff0c;并将控制权移交给用户程序。以下是其运行机制和关键流程的详细说明&#xff1a; 1、单片机 Bootloader 的核心作用 固件更新&…

MySQL数据库(3)—— 表操作

目录 一&#xff0c;创建表 1.1 创建表的SQL 1.2 演示 二&#xff0c;查看表 三&#xff0c;修改表 四&#xff0c;删除表 常用的表操作会涉及到两种SWL语句 DDL&#xff08;Data Definition Language&#xff09;数据定义语言&#xff1a;建表、改表、删表等&#xff0…

Springboot + Ollama + IDEA + DeepSeek 搭建本地deepseek简单调用示例

1. 版本说明 springboot 版本 3.3.8 Java 版本 17 spring-ai 版本 1.0.0-M5 deepseek 模型 deepseek-r1:7b 需要注意一下Ollama的使用版本&#xff1a; 2. springboot项目搭建 可以集成在自己的项目里&#xff0c;也可以到 spring.io 生成一个项目 生成的话&#xff0c;如下…

七星棋牌源码高阶技术指南:6端互通、200+子游戏玩法深度剖析与企业级搭建实战(完全开源)

在棋牌游戏行业高速发展的今天&#xff0c;如何构建一个具备高并发、强稳定性与多功能支持的棋牌游戏系统成为众多开发者和运营团队关注的焦点。七星棋牌全开源修复版源码 凭借其 六端互通、200子游戏玩法、多省区本地化支持&#xff0c;以及 乐豆系统、防沉迷、比赛场、AI智能…

HarmonyOS 开发套件 介绍 ——上篇

HarmonyOS 开发套件 介绍 ——上篇 在当今科技飞速发展的时代&#xff0c;操作系统作为智能设备的核心&#xff0c;其重要性不言而喻。而HarmonyOS&#xff0c;作为华为推出的全新操作系统&#xff0c;正以其独特的魅力和强大的功能&#xff0c;吸引着越来越多的开发者和用户的…

网络空间安全(1)web应用程序的发展历程

前言 Web应用程序的发展历程是一部技术创新与社会变革交织的长卷&#xff0c;从简单的文档共享系统到如今复杂、交互式、数据驱动的平台&#xff0c;经历了多个重要阶段。 一、起源与初期发展&#xff08;1989-1995年&#xff09; Web的诞生&#xff1a; 1989年&#xff0c;欧洲…

JUC并发—9.并发安全集合三

大纲 1.并发安全的数组列表CopyOnWriteArrayList 2.并发安全的链表队列ConcurrentLinkedQueue 3.并发编程中的阻塞队列概述 4.JUC的各种阻塞队列介绍 5.LinkedBlockingQueue的具体实现原理 6.基于两个队列实现的集群同步机制 1.并发安全的数组列表CopyOnWriteArrayList …

Baklib云智协同:数字资产赋能企业效能跃升

内容概要 在数字化转型加速的背景下&#xff0c;Baklib通过构建智能化的知识中台架构&#xff0c;为企业打造了贯穿知识采集、整合、应用的全链路解决方案。该平台以动态知识图谱为核心技术底座&#xff0c;支持文档、音视频、代码等20余种格式的数字资产全生命周期管理&#…

wordpress adrotate插件 文件上传漏洞

当你爆破进wordpress后台但权限不是管理员的时&#xff0c;如果你有adrotate插件操作权限可以用adrotate的文件上传功能get webshell 该漏洞需要AdRotate版本 < 5.13.3 第一步按顺序点击上传文件 在这里文件一定要压缩成zip格式&#xff0c;上传的时候也是上传这个zip 上…

Python爬虫入门到精通:从零开始的数据采集之旅

一、网络世界的"小蜘蛛":什么是爬虫? 想象一下,你是一只勤劳的小蜘蛛,每天在互联网这张巨大的网上爬来爬去。你不需要自己织网,只需要顺着别人织好的网络路径,把有价值的信息收集到自己的小篮子里。这就是爬虫最形象的比喻——一个自动化的信息采集程序。 Py…

Transformer解析——(四)Decoder

本系列已完结&#xff0c;全部文章地址为&#xff1a; Transformer解析——&#xff08;一&#xff09;概述-CSDN博客 Transformer解析——&#xff08;二&#xff09;Attention注意力机制-CSDN博客 Transformer解析——&#xff08;三&#xff09;Encoder-CSDN博客 Transforme…

毕业项目推荐:基于yolov8/yolov5/yolo11的番茄成熟度检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示&#xff1a;功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出&#xff08;xls格式&#xff09;功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…

Blaze RangePartitioning 算子Native实现全解析

引言&#xff1a;本文将全面且深入地解析Blaze RangePartitioning算子的Native实现过程。相较于原生Spark&#xff0c;RangePartitioning的Native实现在执行时间上达到了30%的显著下降&#xff0c;同时在资源开销方面节省了高达76%。这一改进大幅降低了运行成本&#xff0c;展现…

1、Window Android 13模拟器 将编译的映像文件导入Android Studio

1、环境准备 编译环境&#xff1a;Ubuntu-18.04.5编译版本&#xff1a;android13-release下载地址&#xff1a;清华大学开源软件镜像站AOSP # 下载repo # 同步代码&#xff1a;repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android13-r…

MTK-Android13-包安装器PackageInstaller 静默安装实现

目的 我们最终是为了搞明白安装的整个流程。一方面通过安卓系统自带的包安装器来了解PMS 安装流程&#xff1b;另一方面熟悉框架层Framework 针对Android apk 安装流程。 前两篇文章分析了PackagerInstaller 安装流程。 Android13-包安装器PackageInstaller-之apk安装跳转 An…