首页 > 其他分享 >学习HTML最后一天

学习HTML最后一天

时间:2024-09-23 18:48:22浏览次数:11  
标签:flex 元素 background 一天 学习 HTML 设置 margin CSS

CSS 实用技巧详解

在前端开发中,CSS 起着至关重要的作用,掌握一些特定的 CSS 技巧可以让我们的页面布局更加高效和美观。今天就来分享三个 CSS 中的重要知识点:弹性布局、精灵图以及外边距合并与塌陷。

一、弹性布局(父子关系)

弹性布局,也称为 Flexbox,是一种强大的 CSS 布局方式,可以轻松地实现复杂的页面布局。

父元素属性

  1. display: flex:将父元素设置为弹性盒子,开启弹性布局模式。
  2. flex-direction:可以设置主轴方向,可选值有row(默认,水平方向从左到右)和column(垂直方向从上到下)。
  3. flex-wrap:控制元素是否换行,wrap表示允许换行,nowrap表示不换行。
  4. justify-content:设置元素在主轴方向的位置,可选值有flex-start(起点对齐)、flex-end(终点对齐)、center(居中对齐)、space-between(两端对齐,中间间距相等)、space-around(元素周围间距相等)、space-evenly(元素之间和元素与边缘的间距都相等)。
  5. align-items:设置元素在侧轴方向的位置,可选值有flex-startcenterflex-endstretch(拉伸)。
  6. align-content:在多行弹性容器中,设置元素在侧轴方向的位置,与flex-wrap一起使用,可选值与align-items类似。

子元素属性

  1. flex-grow:定义子元素的放大比例,当空间有剩余时,子元素可以根据这个值进行放大。
  2. flex-shrink:定义子元素的收缩比例,当空间不足时,子元素可以根据这个值进行收缩。
  3. flex-basis:设置子元素的初始尺寸。
  4. flex:是flex-growflex-shrinkflex-basis的缩写,例如flex: 1 2 3;表示flex-grow为 1,flex-shrink为 2,flex-basis为 3。
  5. order:设置元素渲染的先后顺序。
  6. align-self:可以单独设置某个子元素在侧轴方向的位置。

下面是一个弹性布局的示例代码:

<!-- 
  父元素
      display: flex  弹性盒子
      flex-direction: row (主轴方向) | column(侧轴)
      flex-wrap: wrap | nowrap  设置换行
      设置元素在主轴方向的位置
      justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly
      设置元素在侧轴方向的位置
      align-items: flex-start | center | flex-end | stretch (拉伸)
      设置元素在侧轴方向的位置(和换行一起使用)
      align-content: flex-start | center | flex-end  
      
  子元素
      flex-grow   扩大
      flex-shrink  收缩
      flex-basis   设置尺寸
      flex: 1 2 3;
      flex: flex-grow  flex-shrink  flex-basis
      order  设置元素渲染的先后顺序
      align-self 设置元素在侧轴方向的位置        
-->
      <style>
        body { margin: 0; }
        .header {
            width: 100%;
            height: 60px;
            background-color: deepskyblue;
            /* 此处利用弹性盒子,快速控制子元素在主轴方向上两端对齐,在侧轴方向上居中。 */
            display: flex;
            justify-content: space-between;
            align-items: center;
        }
        .logo {
            font-weight: bold;
            font-size: 20px;
            margin-left: 20px;
        }
        .link {
            margin-right: 20px;
        }
        .link a {
            color: #ffffff;
            font-size: 20px;
            /* 移除下划线 */
            text-decoration: none;
        }
      </style>

      <div class="header">
           <div class="logo">
             <!-- 品牌 -->
              <span>LOGO</span>
           </div>
           <div class="link">
               <a href="#">登录</a>
           </div>
      </div>

在这个例子中,利用弹性盒子快速控制子元素在主轴方向上两端对齐,在侧轴方向上居中。

二、精灵图

精灵图是一种将许多小图标集中在一张背景透明的图片上的技术,可以减少 HTTP 请求次数,提高页面加载速度。

我们可以使用在线工具如 http://www.spritecow.com/ 来快速找到图标在精灵图上的坐标位置。

使用精灵图的步骤如下:

  1. 将需要的小图标整合到一张透明背景的图片中。
  2. 在 CSS 中,通过background-image属性设置精灵图为背景图,然后使用background-position属性来调整背景图的位置,以显示特定的图标。

三、外边距合并与塌

在 CSS 中,外边距合并和塌陷是一些容易让人困惑但又非常重要的概念。

外边距塌陷

当一个元素包含在另一个元素中时,如果子元素设置了margin-topmargin-bottom,并且父元素没有设置边框、overflow:hiddenfloat等属性,就会发生外边距塌陷。子元素的外边距会 “穿透” 父元素,与父元素的外边距合并。

在这个例子中,为了防止外边距塌陷,可以将父元素设置为overflow:hidden、设置边框或者让父元素脱离正常文档流(如设置float:left)。

外边距合并

垂直方向上,并列关系的两个元素,如果上边元素设置margin-bottom,下边元素设置margin-top,这两个元素的间距不会相加,而是取属性值较大的一个间距。

解决方案有以下两种:

  1. 并列关系的两个元素,要么统一设置margin-top或者统一设置margin-bottom
  2. 给并列关系的两个元素嵌套一个父元素,设置overflow:hidden(形成 BFC)。
<style>
body {
    margin: 0;
}
.parent {
    width: 200px;
    height: 200px;
    background-color: green;
    /* 防止外边距塌陷的写法:主要是把这个元素设置成BFC(块级格式化上下文 、独立的渲染区域)
    1. 设置overflow:hidden 
    */
    overflow: hidden;

    /* 
    2. 设置边框
     */
     /* border: 1px solid white; */

     /* 
     3. 可以让这个元素脱离正常文档流
     */
     /* float: left; */
}
.child {
    width: 100px;
    height: 100px;
    background-color: red;
    /* 设置子元素距离父元素顶部50像素 */
    margin-top: 50px;
}
</style>

<div class="parent">
 <div class="child"></div>
</div>

<style>
.item {
    width: 300px;
    height: 100px;
}
.box-1 {
    background-color: purple;
    margin-bottom: 20px;
}
.box-2 {
    background-color: deepskyblue;
    margin-top: 30px;
}
/* 
    垂直方向,并列关系的两个元素,
    上边元素设置margin-bottom:值
    下边元素设置margin-top:值 
    这两个元素的间距不会相加,而是取属性值较大一个间距。

    解决方案:
     1. 并列关系的两个元素,要么统一设置margin-top或者统一设置margin-bottom
     2. 给并列关系的两个元素嵌套一个父元素,设置overflow:hidden (形成BFC)

 */
 .wrap {
    overflow: hidden;
 }

</style>

<div class="wrap"><div class="item box-1"></div></div>
<div class="wrap"><div class="item box-2"></div></div>

掌握这些 CSS 技巧,可以让我们在前端开发中更加得心应手,提高开发效率和页面性能。

希望这篇博客对大家有所帮助!如果你有任何问题或建议,欢迎在评论区留言。

标签:flex,元素,background,一天,学习,HTML,设置,margin,CSS
From: https://blog.csdn.net/2401_83588067/article/details/142465756

相关文章

  • 学习高校课程-软件工程-理解需求(ch8)
    REQUIREMENTSENGINEERING需求工程Requirementsengineeringencompassessevendistincttasks:inception,elicitation,elaboration,negotiation,specification,validation,andmanagementInception启动Atprojectinception,youestablishabasicunderstandingof......
  • CSS 学习路线图
    一、基础入门阶段学习内容:理解CSS的作用和基本概念,包括样式表如何与HTML结合来美化网页。掌握CSS的语法结构,如选择器、属性和值的组合方式。学习常见的文本样式属性,如字体大小、字体颜色、字体样式(加粗、斜体等)、文本对齐方式等。熟悉简单的盒模型概念,包括元素的宽度、......
  • JavaScript 学习路线图
    基础阶段主要内容:掌握JavaScript的基本语法,如变量、数据类型(字符串、数字、布尔、对象、数组等)、运算符等。理解程序的控制流,包括条件语句(如if-else)、循环语句(如for、while)。学会使用函数来封装代码,理解函数的参数、返回值以及作用域等概念。学习网站:W3Schools:https://w......
  • Go 学习路线图
    基础阶段学习内容:掌握Go的基本语法,包括变量、常量、数据类型(如整数、浮点数、字符串、布尔值、数组、切片、映射等)、运算符等。理解程序的控制流,如条件语句(if-else、switch-case)、循环语句(for、while等)。学会使用函数来封装代码,理解函数的参数、返回值、函数的定义和调用。......
  • 机器学习及其应用领域【金融领域】
    机器学习及其应用领域【金融领域】一、智能投顾与资产配置二、信贷审批与风险评估三、支付与交易安全四、金融欺诈检测五、市场预测与情绪分析六、客户服务与个性化推荐七、面临的挑战与未来趋势八、总结一、智能投顾与资产配置智能投顾:通过机器学习技术,智能投顾平......
  • Python学习路线
    一、基础阶段Python基础语法学习内容:变量、数据类型(如整数、浮点数、字符串、布尔等)、运算符、控制流语句(如if-else、for、while等)、函数定义与调用等。学习网站及网址:廖雪峰的Python入门教程:https://www.liaoxuefeng.com/wiki/1016959663602400。廖雪峰老师的教程讲解......
  • 漂亮师娘守寡多年终究耐不住寂寞与徒弟一起学习AI大模型应用【LangChain+LlamaIndex+A
    上节传送门: 三只羊女主播狂欢自学AI大模型应用开发却换来嘲讽,回复:我有更多优点——理论开篇-CSDN博客文章浏览阅读944次,点赞19次,收藏6次。33岁丰腴女自学AI大模型应用开发却换来嘲讽,回复:我有更多优点——导论——1-CSDN博客这也是我这么多年来的一个心得和实际的体会,以后的日......
  • 动手学深度学习8.7. 通过时间反向传播-笔记&练习(PyTorch)
    本节课程地址:本节无视频本节教材地址:8.7.通过时间反向传播—动手学深度学习2.0.0documentation(d2l.ai)本节开源代码:...>d2l-zh>pytorch>chapter_multilayer-perceptrons>bptt.ipynb通过时间反向传播到目前为止,我们已经反复提到像梯度爆炸或梯度消失,以及需要对循环......
  • ESP32等单片机学习和研究的迷宫-传统和现代-端和云-Arduino IDE和wokwi web
    ESP32等单片机学习和研究的迷宫-传统和现代-端和云-Arduino和wokwiESP32等单片机学习和研究的迷宫-传统和现代-端和云-Arduino和wokwi什么是迷宫?不合适的学习和研究方式,花费大量的精力和时间,收效甚微。这种又称之为学习和研究的“黑洞”出路从传统到现代:降本增效!E......
  • 联邦学习(Federated Learning)原理与代码实战案例讲解
    联邦学习(FederatedLearning)原理与代码实战案例讲解关键词:联邦学习集中式学习数据隐私保护分布式机器学习同态加密安全多方计算1.背景介绍1.1问题的由来随着大数据时代的到来,数据孤岛现象日益严重。许多组织拥有大量的本地数据,但由于法律、安全或商业原因,这些数据......