Web前端开发之CSS_2

  • 关系选择器
  • 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.mzph.cn/news/831062.shtml

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

相关文章

力扣刷题第0天:只出现一次的数字

目录 第一部分:题目描述 ​第二部分:题目分析 第三部分:解决方法 3.1思路1: 双指针暴力求解 3.2 思路2&#xff1a;异或运算 第四部分:总结收获 第一部分:题目描述 第二部分:题目分析 由图片分析可得&#xff0c;该题目对算法时间复杂度有一定的要求时间复杂度为O(N)&a…

知乎广告投放怎么操作?如何开通知乎广告账户?

知乎作为一个汇聚知识精英与行业领袖的问答社区&#xff0c;其独特的平台属性和高质量的用户基础&#xff0c;使之成为品牌广告投放不可忽视的一片蓝海。云衔科技通过专业化的广告开户及代运营服务&#xff0c;助力企业精准触达目标人群&#xff0c;实现品牌传播与商业目标的双…

【源码阅读】Golang中的go-sql-driver库源码探究

文章目录 前言一、go-sql-driver/mysql1、驱动注册&#xff1a;sql.Register2、驱动实现&#xff1a;MysqlDriver3、RegisterDialContext 二、总结 前言 在上篇文章中我们知道&#xff0c;database/sql只是提供了驱动相关的接口&#xff0c;并没有相关的具体实现&#xff0c;具…

2024五一杯数学建模C题思路分享 - 煤矿深部开采冲击地压危险预测

文章目录 1 赛题选题分析 2 解题思路2.1 问题重述2.2 第一问完整思路2.2 二、三问思路更新 3 最新思路更新 1 赛题 C题 煤矿深部开采冲击地压危险预测 煤炭是中国的主要能源和重要的工业原料。然而&#xff0c;随着开采深度的增加&#xff0c;地应力增大&#xff0c;井下煤岩动…

键盘更新计划

作为 IT 搬砖人&#xff0c;一直都认为键盘没有什么太大关系。 每次都是公司发什么用什么。 但随着用几年后&#xff0c;发现现在的键盘经常出问题&#xff0c;比如说调节音量的时候通常莫名其妙的卡死&#xff0c;要不就是最大音量要不就是最小音量。 按键 M 不知道什么原因…

Java | Leetcode Java题解之第60题排列序列

题目&#xff1a; 题解&#xff1a; class Solution {public String getPermutation(int n, int k) {int[] factorial new int[n];factorial[0] 1;for (int i 1; i < n; i) {factorial[i] factorial[i - 1] * i;}--k;StringBuffer ans new StringBuffer();int[] valid…

[数据结构]———交换排序

目录 ​编辑 ​编辑 1.交换排序 第一个定义了一个名为Swap的函数 第二个三数取中 2.冒泡排序 代码解析 冒泡排序的特性总结&#xff1a; 3.快速排序 1. hoare版本 2. 挖坑法 代码解析 3. 前后指针版本 代码解析 1.交换排序 基本思想&#xff1a;所谓交换&#xff0…

virtualbox kafka nat + host-only集群 + windows 外网 多网卡

virtualbox kafka nat + host-only集群 + windows 映射访问 kafka集群搭建背景kafka集群搭建 背景 使用virtualbox搭建kafka集群,涉及到不同网络策略的取舍 首先 桥接 网络虽说 啥都可以,但是涉及到过多ip的时候,而且还不能保证使用的ip不被占用,所以个人选择kafka虚拟机…

java-链表排序

需求 思路 排序&#xff1a;讲所有的值都取出来&#xff0c;存储到ArrayList中&#xff0c;然后排序&#xff0c;将排序之后的元素依次使用add方法添加到自定义链表合并排序&#xff1a;先合并&#xff0c;然后调用刚才写的排序算法合并&#xff1a;将表一的头结点作为新链表的…

开发日志:Kylin麒麟操作系统部署ASP.NET CORE

需求场景&#xff1a; 我需要部署的项目是在Windows上开发的&#xff0c;目标框架为.net core 6.0 因此我们需要先在kylin上部署项目运行所需要的环境。 借助百度词条&#xff0c;先看看Kylin是什么&#xff1a; 服务器资源&#xff1a; 查看系统版本 cat /etc/kylin-releas…

MyBatis 核心配置讲解(下)

大家好&#xff0c;我是王有志&#xff0c;一个分享硬核 Java 技术的互金摸鱼侠。 我们书接上回&#xff0c;继续聊 MyBatis 的核心配置&#xff0c;我们今天分享剩下的 5 项核心配置。 不过正式开始前&#xff0c;我会先纠正上一篇文章 MyBatis 核心配置讲解&#xff08;上&…

React 第十二章 UmiJs

Umi.js 介绍 Umi 是由蚂蚁集团推出的可扩展的企业级前端应用框架。Umi 以路由为基础&#xff0c;同时支持配置式路由和约定式路由&#xff0c;保证路由的功能完备&#xff0c;并以此进行功能扩展。然后配以生命周期完善的插件体系&#xff0c;覆盖从源码到构建产物的每个生命周…

OpenGL 入门(一)—— OpenGL 基础

1、OpenGL 基础知识 1.1 OpenGL 简介 OpenGL&#xff08;Open Graphics Library&#xff09;是图形领域的工业标准&#xff0c;是一套跨编程语言、跨平台、专业的图形编程&#xff08;软件&#xff09;接口。它用于二维、三维图像&#xff0c;是一个功能强大&#xff0c;调用…

PySpark学习---销售情况数据统计分析案例

需求分析&#xff1a; 某公司是做零售相关业务&#xff0c;旗下出品各类收银机. 目前公司的收银机已经在全国铺开,在各个省份均有店铺使用.机器是联网的,每一次使用都会将售卖商品数据上传到公司后台.老板现在想对省份维度的销售情况进行统计分析 逻辑需求&#xff1a; 1.各省销…

数据结构与算法实验题五道 A一元多项式的求导 B还原二叉树 C 六度空间 D 基于词频的文件相似度 E 模拟excel排序

A (1) 输入格式说明&#xff1a; 以指数递降方式输入多项式非零项系数和指数&#xff08;绝对值均为不超过1000的整数&#xff09;。数字间以空格分隔。 (2) 输出格式说明&#xff1a; 以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔&#xff0c;但…

第八篇:隔离即力量:Python虚拟环境的终极指南

隔离即力量&#xff1a;Python虚拟环境的终极指南 1 引言 在编程的多元宇宙中&#xff0c;Python语言犹如一颗闪耀的星辰&#xff0c;其魅力不仅仅在于简洁的语法&#xff0c;更在于其庞大而繁荣的生态系统。然而&#xff0c;随着应用的增长和复杂性的提升&#xff0c;开发者们…

ChatGPT 记忆功能上线 能记住你和GPT互动的所有内容

你和ChatGPT的互动从今天开始变得更加智能&#xff01;ChatGPT现在可以记住你的偏好和对话细节&#xff0c;为你提供更加相关的回应。和它聊天&#xff0c;你可以教它记住新的东西&#xff0c;例如&#xff1a;“记住我是素食主义者&#xff0c;当你推荐食谱时。”想了解ChatGP…

【15】Head First Java 学习笔记

HeadFirst Java 本人有C语言基础&#xff0c;通过阅读Java廖雪峰网站&#xff0c;简单速成了java&#xff0c;但对其中一些入门概念有所疏漏&#xff0c;阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…

Java基于微信小程序+uniapp的校园失物招领小程序(V3.0)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

微软如何打造数字零售力航母系列科普06 - 如何使用微软的Copilot人工智能

如何使用微软的Copilot人工智能&#xff1f; Copilot和ChatGPT有很多相似之处&#xff0c;但微软的聊天机器人本身就有一定的优势。以下是如何对其进行旋转&#xff0c;并查看其最引人注目的功能。 ​​​​​​​ &#xff08;资料来源&#xff1a;Lance Whitney/微软&…