Web前端开发之CSS_2

news2024/11/26 22:44:36
  • 关系选择器
  • CSS盒子模型
  • 弹性盒子模型
  • 文档流
  • 浮动
  • 清除浮动
  • 定位

1. 关系选择器

1.1 后代选择器 E F{}

        选择所有被 E 元素包含的 F 元素,中间用空格隔开

<ul>

    <li>后代列表1</li>

    <div>

        <ol>

            <li>后代列表2</li>

        </ol>

    </div>

</ul>

<ol>

     <li>非后代列表3</li>

</ol>

// 后代选择器 E F{}

ul li{

        color:red;

}

1.2 子代选择器 E>F{}

        选择所有作为 E 元素的直接子元素 F,对更深一层的元素不起作用,用表示

<div>

     <p>子元素</p>

     <ul>

         <li>孙元素</li>

     </ul>

</div>

// 子代选择器 E>F{}

div>p{

        color:red;

}

1.3 相邻兄弟选择器 E+F{}

        选择紧跟 E 元素后的 F 元素,用加号表示,选择相邻的第一个兄弟元素只能向下选择

<p>我是内容1</p>

<h3>我是标题</h3>

<p>我是内容2</p>

// 相邻兄弟选择器 E+F{}

h3+p{

        color:red;

}

1.4 通用兄弟选择器 E~F{}

        选择 E 元素之后的所有兄弟元素 F,作用于多个元素,用~隔开,只能向下选择

<p>我是内容1</p>

<h3>我是标题</h3>

<p>我是内容2</p>

<div>hahaha</div>

<p>我是内容3</p>

// 通用兄弟选择器 E~F{}

h3~p{

        color:red;

}

2. CSS盒子模型(Box Model)

        所有HTML元素都可以看作盒子,在CSS中,“box model”这一术语是用来设计和布局时使用。CSS盒子模型本质上是一个盒子,封装周围的HTML元素,它包括:外边距(margin)边框(border)内边距(padding)实际内容(content)

  • Margin(外边距):清除边框外的区域,外边距是透明的(第一个值上下,第二个值左右)
  • Border(边框):围绕在内边距和内容外的边框
  • Padding(内边距):清除内容周围的区域(两个值时:第一个值上下,第二个值左右)
  • Content(内容):盒子的内容,显示文本和图像

<body>

    <div>内容</div>

    <p>p标签</p>

</body>

div{

            width: 100px;

            height:100px;

            background-color: red;

            padding-left: 50px;

            padding-right: 50px;

            padding-top: 50px;

            padding-bottom: 50px;

            border: 2px solid green;

            margin: 50px;

        }

3. 弹性盒子模型(flex box)

        弹性盒子是CSS3的一种新的布局模式。CSS3弹性盒子是一种当页面需要适应不同屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式。引入弹性盒子布局模型的目的是提供一种更加有效的方式来对一个容器中的子元素进行排列、对齐和分配空白空间。

        弹性盒子由弹性容器(Flex container)弹性子元素(Flex item)组成。弹性容器通过设置display 属性的值为 flex 将其定义为弹性容器。弹性容器内包含了一个或多个弹性子元素。

        弹性容器外及弹性子元素内是正常渲染的。弹性盒子只定义了弹性子元素如何在弹性容器内布局弹性盒子里内容默认横向摆放

<div class="container">

     <div class="box1"></div>

     <div class="box2"></div>

</div>

.container{

     width: 500px;

     height:500px;

     background-color: #555;

     display: flex;

}

.box1{

     width: 100px;

     height:100px;

     background-color: red;

}

.box2{

     width: 100px;

     height:100px;

     background-color: green;

}

3.1 父元素上的属性
  • display 属性:display:flex;    // 开启弹性盒子,子元素默认水平排列
  • flex-direction 属性:指定了弹性子元素在父容器中的位置

flex-direction: row | row-reverse | column | column-reverse

// row:横向从左到右排列(左对齐),默认的排列方式

// row-reverse:反转横向排列(右对齐,从后往前排,最后一项排在最前面)

// column:纵向排列

// column-reverse:反转纵向排列,从下往上排,最后一项排在最上面

  • justify-content属性:内容对齐,把弹性项沿着弹性容器的主轴线main axis对齐,垂直方向

justify-content:flex-start | flex-end | center          // 居上、居下、居中

// flex-start 弹性项目向行头紧挨着填充,默认值

// flex-end 弹性项目向行尾紧挨着填充

// center 弹性项目居中紧挨着填充,如果剩余自由空间为负,则项目在两个方向同时溢出

  • align-items 属性:设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式

align-items: flex-start | flex-end | center             // 居左、居右、居中

// flex-start 弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠在该行的侧轴起始边界

// flex-end 弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠在该行的侧轴结束边界

// center 弹性盒子元素的侧轴(纵轴)上居中放置

3.2 子元素上的属性
  • flex属性:根据弹性盒子元素所设置的扩展因子作为比率分配剩余空间。默认为0,即如果存在剩余空间,也不放大。如果只有一个子元素设置,那么按扩展因子转化的百分比对其分配剩余空间。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>

        .container{
            width: 500px;
            height:500px;
            background-color: #555;
            display: flex;
            flex-direction: row;
            justify-content: center;
            align-items: center;
        }

        .box1{
            width: 100px;
            height:100px;
            background-color: red;
            flex:2;
        }

        .box2{
            width: 100px;
            height:100px;
            background-color: green;
            flex: 2;
        }

        .box3{
            width: 100px;
            height:100px;
            background-color: blue;
            flex:1;
        }

    </style>
</head>
<body>
    
    <div class="container">
        <div class="box1"></div>
        <div class="box2"></div>
        <div class="box3"></div>
    </div>

</body>
</html>

4. 文档流

        文档流是文档中可显示对象在排列时所占用的位置/空间。例如:块元素自上而下摆放,内联元素从左到右摆放。标准流里面的限制非常多,导致很多页面效果无法实现:

  • 高矮不齐,底边对齐
  • 空白折叠现象:无论多少个空格、换行、tab都会折叠为一个空格
  • 元素空隙:如果想让img标签之间没有空隙,必须紧密连接

脱离文档流:使一个元素脱离标准文档流有三种方式

  • 浮动
  • 绝对定位
  • 固定定位

5. 浮动 float

        float 属性定义元素在哪个方向浮动,任何元素都可以浮动。

描述
left元素向左浮动
right元素向右浮动

浮动的原理

  • 浮动以后使元素脱离了文档流
  • 浮动只有左右浮动,没有上下浮动

元素向左浮动:脱离文档流之后,元素相当于在页面上增加一个浮层放置内容。此时可以理解为有两层页面,一层是底层的原页面,一层是脱离文档流的上层页面,所以会出现折叠现象

<div class="box"></div>

<div class="container"></div>

.box{

            width: 100px;

            height: 100px;

            background-color: aqua;

            float: left;

        }

        .container{

            width: 200px;

            height: 200px;

            background-color: blueviolet;

        } 

 元素向右浮动

所有元素向左浮动:当所有元素同时浮动的时候,会变成水平摆放,向左或者向右导航栏水平

当容器不足时:以横向摆放内容的时候,会在下一行摆放

6. 清除浮动

浮动副作用:当元素设置float浮动后,该元素会脱离文档流并向左/向右浮动,

  • 浮动元素会造成父元素高度塌陷
  • 后续元素会收到影响

清除浮动:当父元素出现塌陷的时候,对布局是不利的,所以必须清除副作用

  • 父元素设置高度,撑开元素本身大小
  • 受影响的元素增加clear属性both
  • overflow清除浮动
  • 伪对象方式

overflow清除浮动:如果父级塌陷,并且同级元素也受到了影响,在父布局不能设置高度的情况下,可以使用overflow清除浮动。父级标签的样式里加:overflow:hidden; clear:both;

<div class="container">

        <div class="box"></div>

        <div class="box"></div>

        <div class="box"></div>

</div>

<div class="nav"></div>        // 如果div在内部,依然需要单独给nav添加clear属性

.container{

        width:350px;

        border:1px solid red;

        overflow:hidden;

        clear:both;

.box{

        width:100px;

        height:100px;

        background-color:#fff176;

        float:left;

        margin:5px;

}

.nav{

        width:100px;

        height:100px;

        background-color:red;

}

伪对象方式:如果父级塌陷,并且同级元素也受到了影响,还可使用伪对象方式处理。为父标签添加伪类after,设置空的内容,并且使用clear:both;

<div class="container">

        <div class="box"></div>

        <div class="box"></div>

        <div class="box"></div>

</div>

<div class="nav"></div>

.container{

        width:350px;

        border:1px solid red;

.container::after{

        content:"";

        display:block;

        clear:both;

}

.box{

        width:100px;

        height:100px;

        background-color:#fff176;

        float:left;

        margin:5px;

}

.nav{

        width:100px;

        height:100px;

        background-color:red;

7. 定位 position属性

描述
relative相对定位
absolute绝对定位
fixed固定定位

其中,绝对定位和固定定位会脱离文档流。设置定位之后,可以使用四个方向值进行调整位置:lefttoprightbottom

  • 相对定位

 <div class="box"></div>

.box{

            width: 200px;

            height: 200px;

            background-color: red;

            position: relative;

            left: 100px;

}

  • 绝对定位

<div class="box1"></div>

<div class="box2"></div>

<div class="box3"></div>

.box1{

        width: 200px;

        height: 200px;

        background-color: red;

        position: absolute;

        left: 100px;

        top: 200px;

}

.box2{

        width: 300px;

        height: 300px;

        background-color:aqua;

}

.box3{

        width: 200px;

        height: 200px;

        background-color: blueviolet;

        position: absolute;

        left: 50px;

        top: 100px;

}

  • 固定定位 ---- 可用于不随页面滑动而位置固定的导航栏,广告位等

<div class="box1"></div>

<div class="box2"></div>

.box1{

        width: 200px;

        height: 200px;

        background-color: red;

        position: fixed;

        right: 100px;

        bottom: 100px;                // 常见于右下角导航栏

}

.box2{

        width: 300px;

        height: 300px;

        background-color:aqua;

}

 注意:设置定位之后,相对定位和绝对定位是相对于具有定位的父级元素进行位置调整,如果父级元素不存在定位,则继续向上逐级寻找,直到顶层文档

  • Z-index 属性,设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素前面。

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

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

相关文章

20240428如何利用IDM下载磁链视频

缘起&#xff1a; https://weibo.com/tv/show/1034:4864336909500449 中国获奖独立纪录片《阿辉》揭秘红灯区“教父”的生存法则 5,751次观看 1年前 发布于 陕西 身为里中横 67.7万粉丝 互联网科技博主 微博原创视频博主 头条文章作者 https://weibo.com/tv/show/1034:4864…

深度学习:基于Keras框架,使用神经网络模型对葡萄酒类型进行预测分析

前言 系列专栏&#xff1a;机器学习&#xff1a;高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目&#xff0c;每个项目都处理一组不同的问题&#xff0c;包括监督和无监督学习、分类、回归和聚类&#xff0c;而且涉及创建深度学…

数据结构 - C/C++

快速跳转 数组链表栈队列串树 目录 数据结构 逻辑结构 物理结构 数据结构 数据 数据不仅仅包括整型、实型等数值类型&#xff0c;还包括字符及声音、图像、视频等非数值类型。 计算机可以理解并按照指定格式处理。 结构 元素相互之间存在一种或多种特定关系的数据集合。 …

Docker如何开启远程访问?

Docker是一种开源的容器化平台&#xff0c;通过将应用程序和其依赖项打包成容器&#xff0c;可以实现快速部署、弹性运行和简化管理。默认情况下&#xff0c;Docker的运行环境是局域网内的单机&#xff0c;但有时我们需要在不同地区的电脑、设备之间进行远程通信。本篇文章将介…

上市企业数字赋能指数数据集-2001到2022年(TF-IDF)

01、数据简介 上市公司数字赋能指数是一个用来衡量上市公司利用数字技术提高业务能力和效率的指标。这个指数反映了上市公司利用大数据、云计算和人工智能等数字技术&#xff0c;高效地利用商业资源和信息&#xff0c;并扩展供应关系的能力。市公司数字赋能指数是一种综合性的…

区间预测 | PSO-RF-KDE的粒子群优化随机森林结合核密度估计多变量回归区间预测(Matlab)

区间预测 | PSO-RF-KDE的粒子群优化随机森林结合核密度估计多变量回归区间预测&#xff08;Matlab&#xff09; 目录 区间预测 | PSO-RF-KDE的粒子群优化随机森林结合核密度估计多变量回归区间预测&#xff08;Matlab&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基…

web安全---xss漏洞/beef-xss基本使用

what xss漏洞----跨站脚本攻击&#xff08;Cross Site Scripting&#xff09;&#xff0c;攻击者在网页中注入恶意脚本代码&#xff0c;使受害者在浏览器中运行该脚本&#xff0c;从而达到攻击目的。 分类 反射型---最常见&#xff0c;最广泛 用户将带有恶意代码的url打开&a…

websocket 单点通信,广播通信

Websocket协议是对http的改进&#xff0c;可以实现client 与 server之间的双向通信&#xff1b; websocket连接一旦建立就始终保持&#xff0c;直到client或server 中断连接&#xff0c;弥补了http无法保持长连接的不足&#xff0c;方便了客户端应用与服务器之间实时通信。 参…

信息系统管理

目录 一、信息系统管理范围 1、规划和组织 2、设计和实施 ①、信息系统架构 Ⅰ、集中式架构 Ⅱ、分布式架构 Ⅲ、SOA&#xff08;面向服务的系统架构&#xff09; 3、运维和服务 ①、运行管理和控制 ②、IT服务管理 ③、运行与监控 Ⅰ、运行监控 Ⅱ、安全监控 4、…

【题解】—— LeetCode一周小结17

【题解】—— 每日一道题目栏 上接&#xff1a;【题解】—— LeetCode一周小结16 22.组合总和 Ⅳ 题目链接&#xff1a;377. 组合总和 Ⅳ 给你一个由 不同 整数组成的数组 nums &#xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数…

01.Kafka简介与基本概念介绍

1 Kafka 简介 Kafka 是最初由 Linkedin公司开发&#xff0c;是一个分布式、支持分区(partition)的、多副本(replica)的&#xff0c;基于 Zookeeper 协调的分布式消息系统&#xff0c;它的最大的特性就是可以实时的处理大量数据以满足各种需求场景&#xff1a;比如基于 hadoop 的…

SpringBoot 快速开始 Dubbo RPC

文章目录 SpringBoot 快速开始 Dubbo RPC下载 Nacos项目启动项目的创建创建主项目接口定义服务的创建Dubbo 服务提供者的创建服务的消费者创建 添加依赖给 Provider、Consumer 添加依赖 开始写代码定义接口在 Provider 中实现在 Consumer 里面使用创建启动类 注册中心配置启动 …

R-Tree: 原理及实现代码

文章目录 R-Tree: 原理及实现代码1. R-Tree 原理1.1 R-Tree 概述1.2 R-Tree 结构1.3 R-Tree 插入与查询 2. R-Tree 实现代码示例&#xff08;Python&#xff09;结语 R-Tree: 原理及实现代码 R-Tree 是一种用于管理多维空间数据的数据结构&#xff0c;常用于数据库系统和地理信…

党建3d互动虚拟现实网上展厅有何优势?

在数字化浪潮席卷全球的今天&#xff0c;企业如何迅速踏上虚拟世界的征程&#xff0c;开启元宇宙之旅?答案就是——3D虚拟云展。这一创新平台&#xff0c;华锐视点以虚拟现实技术和3D数字建模为基石提供3D云展搭建服务&#xff0c;助力企业轻松搭建起虚拟数字基础设施&#xf…

Rust Web开发实战:打造高效稳定的服务端应用

Rust Web开发实战&#xff1a;打造高效稳定的服务端应用 本书将带领您从零开始构建Web应用程序&#xff0c;无论是API、微服务还是单体应用&#xff0c;都将一一涵盖。您将学到如何优雅地对外开放API&#xff0c;如何连接数据库以安全存储数据&#xff0c;以及如何对应用程序进…

用结构体把驱动层和应用层分开

用正点原子代码的usmart分析&#xff0c;如下&#xff1a; usmart.h usmart_config.c 实例&#xff1a;把结构体与具体驱动绑定一起 /* 正点原子的usmart串口的封装 涉及文件&#xff1a;usmart.h usmart.c usmart_config.c 还有外面使用的文件&#xff08;应用层调用&#xff…

Rocketmq 5 分级存储 Tieredstore(RIP-57、RIP-65) 原理详解 源码解析

1. 背景 RocketMQ 5.x 的演进目标之一是云原生化&#xff0c;在云原生和 Serverless 的浪潮下&#xff0c;需要解决 RocketMQ 存储层存在两个瓶颈。 数据量膨胀过快&#xff0c;单体硬件无法支撑存储的低成本和速度无法兼得 众多云厂商也希望提供 Serverless 化的 RocketMQ …

【源码阅读】 Golang中的database/sql库源码探究

Note&#xff1a;文章待完结 文章目录 前言一、整体目录结构二、driver包1、驱动相关driver.Driver2、驱动连接&#xff1a;driver.Conn3、预处理结构&#xff1a;Stmt4、执行结果 driver.Result5、查询结果&#xff1a;driver.Rows6、driver.RowsAffected7、driver.Value8、Va…

IDEA主题美化【保姆级】

前言 一款好的 IDEA 主题虽然不能提高我们的开发效率&#xff0c;但一个舒适简单的主题可以使开发人员更舒适的开发&#xff0c;时常换一换主题可以带来不一样的体验&#xff0c;程序员的快乐就这么简单。话不多说&#xff0c;先上我自己认为好看的主题设置。 最终效果图: 原…

《我们为什么爱喝酒》酒精如何决定人类社会成败 - 三余书屋 3ysw.net

我们为什么爱喝酒&#xff1a;酒精如何决定人类社会成败 大家好&#xff0c;今天我们要解读的书是《我们为什么爱喝酒&#xff1f;》&#xff0c;副标题是“酒精如何决定人类社会成败”。你平时会喝酒吗&#xff1f;你如何看待“喝酒有害健康”这一观点&#xff1f;欢迎在评论…