2,CSS

news/2025/3/12 22:30:36/文章来源:https://www.cnblogs.com/linxiaoki/p/18768784

CSS盒子模型

  • IE盒模型 border-box

    widthheight是盒子最终的尺寸(添加box-sizing:border-box )
  • 标准盒模型 content-box
    widthheight只是内容的尺寸(默认)
width  height  background-color  border  padding margin  (box-sizing)

CSS布局实践

display

定义了元素生成的显示框类型,常见属性值有:blockinlineinline-blockinheritnoneflex.

  • div标签默认的display属性是block,通常称为块级元素
    • 常见的块级元素<div><h1>~<h6><p><ul>dl<table><address><form>等)
  • span标签默认的display属性是inline,称为行内元素
    • 设置宽高不会起作用( margin 和 padding 的值都只对左右起作用)
    • 不可以包含块级元素,只能包含行内元素和文本
    • 常见的行内元素有:<a><b><label><span><img><em><strong><i><input>
    • <img>标签设置宽高可以影像图片大小,这是因为 img 是可替代元素 ??
  • inline-block 即具有块级元素可以设置宽高的特性,又具有行内元素不换行的特性,但元素间会有间隙,消除看这个.
  • inherit表示从父元素继承display属性
  • none表示这个元素不显示,也不占用空间位置
  • flex布局(弹性布局)
    • Flex布局中的元素具有可伸缩性
    • 通过设置父元素的 display 属性为display: flex | inline-flex;,其子元素便有了伸缩性.
position

用来定义元素的定位机制。常用的属性值有:

  • relative:相对定位,相对于元素的正常位置进行定位;
    • 不添加额外属性( left , right , top , bottom 等),它表现的如同 static 一样
    • 添加额外属性会使元素偏离正常位置,并且可能覆盖相邻元素
  • absolute:绝对定位,相对于除 static定位以外的父级/祖先元素进行定位;
    • 如果祖先元素都没有设置定位属性,absolute 会找到最上层即浏览器窗口进行定位
  • fixed:固定定位,相对于浏览器窗口进行定位,网站中的固定 header 和 footer 就是用固定定位来实现的;
    • 页面广告应该就是这样的吧
  • static:默认值,没有定位属性,元素正常出现在文档流中;
  • inherit:继承父元素的 position 属性值。
float

float 属性定义元素在哪个方向浮动。

  • 常用属性值有leftright,即向左浮动和向右浮动。
  • "高度塌陷":子元素溢出到父元素外
    • 不设置float属性,不给父元素设置宽高时, 父元素的宽高会被子元素的内容撑开(如果给父元素设置了宽高,并且宽高小于子元素时也会有 高度塌陷)
    • 设置float属性时,不给父元素设置宽高,父元素不会被子元素撑开,称之为"高度塌陷"
img
        (浮动的子元素不能撑开父元素)
[!清除浮动的方法](https://www.yuque.com/fe9/basic/ecdg1z)

经典布局示例

  大多网站会将页面分为几部分:header (头部)、footer (尾部)
、nav (侧边栏) 、section (核心内容部分)

  • 两栏布局

    • 基础代码
    <head><style type="text/css">.left{width:100px;height: 150px;background-color:#FFB5BF;}.right{height:150px;background-color: #94E8FF;}</style></head><body><div class="container"><div class="left">left</div><div class="right">right</div></div></body>
    
    效果图 - 设置 display 为 inline-block- container.font-size->0 消除间距- right.width-> calc计算宽度 - 使用float -1 - left.float->left- right.margin-left->100px ,为左侧留空间- container.overflow->hidden - 使用浮动 -2(.right形成BFC?)- left.float->left- right.overflow->auto 形成BFC- container.overflow->hidden - 使用absolute- container.position->relativea- left.position->absolute- right.margin-left->100px 为左侧留空间
  • 三栏布局

    • 圣杯布局
      <head><style type="text/css">body{min-width:630px;  /* 保证窗口缩小时仍能展示 */}.center{width:100%;height:150px;background-color: #94E8FF;}.left{width:100px;height: 150px;background-color:#FFB5BF;}.right{height:150px;width:200px;background-color: #8990D5;}</style>
      </head>
      <body><div class="container"><div class="center">center</div><div class="left">left</div><div class="right">right</div></div>
      </body>
      
    效果图 ###### 思想:使用浮动布局,用 padding 为左右元素留空间,灵活使用 margin 的负值和相对定位上元素移动到相应的位置。- 三栏添加左浮动- 移动 margin-left,但会覆盖 center- container 预留位置 padding-left/right- left 、right 相对移动 - 双飞翼布局- 多加了 div:container-center ,没有padding
Flex布局
基本概念图 上图便是一个 Flex布局的大致架构了,图中的囊括概念有几点: - Flex 布局是一整个模块,其中父元素称为 flex container,意为容器;子元素称为 flex item,意为项目; - Flex 布局中有两条看不见的轴线:主轴(main axis)和交叉轴(cross axis)。默认的主轴是平行的,交叉轴是垂直于主轴的; - 主轴的开始位置叫 main start,结束位置叫 main end;交叉轴的开始位置叫 cross start,结束位置叫 cross end; - 子元素在主轴方向上的大小称为 main size,在交叉轴方向上的大小称为 cross size。
容器属性 ( content )

定义为Flex布局的容器 display: flex | inline-flex
容器属性:

  • flex-direction 方向
    • row (主轴,水平,起点在左侧)
    • row-reverse
    • column
    • column-reverse
  • flex-wrap 换行
    • nowrap (不换行)
    • wrap
    • wrap-reverse
  • flex-flow (flex-direction 和 flex-wrap)
    • row no-wrap
  • justify-content 项目在主轴上的对齐方式
    • flex-start
    • flex-end
    • center
    • space-between
    • space-around
  • align-items 项目在交叉轴上的对齐方式
    • flex-start
    • flex-end
    • center
    • baseline
    • stretch
  • align-content 多行时垂直方向的对齐方式
    • flex-start
    • flex-end
    • center
    • space-between
    • space-around
    • stretch
项目属性( item )
  • order
    • 排列顺序,defailt: 0
  • flex-grow
    • 存在空间剩余时,放大比例,default: 0
    • 所有项目为1时,平分剩余空间
  • flex-shrink
    • 空间不足时,缩小比例,set 1:等比缩小,set 0 :不缩小
  • flex-basis
    • default: auto
      -分配空间
  • flex
    • flex-grow、flex-shrink、flex-basis 默认值时 0 1 auto
    • 还有两个快捷值 auto(1 1 auto )和 none (0 0 auto )
  • align-self
    • 定义单个项目与其他项目不一样的对齐方式,可以覆盖 align-items
    • default : auto (继承父元素的align-items属性值,无父元素时等同 stretch)
简单实例 - 三栏布局

flex-grow: 1     s order=-1

推荐阅读:Flex 布局教程:实例篇。

Flex 浏览器兼容性问题

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

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

相关文章

Linux使用:Vim常用命令

多文件编辑 操作 c #c 是“修改(change)”(即删除后进入插入模式),后面可以接一个移动命令 cw #删除一个单词并进入插入模式 c2w 或者 2cw #删除两个单词并进入插入模式ctrl + h/w/u #删除前一个字符,前一个单词,前一行w/W #下一个单词开头 e/E # 下一个单词结尾 …

3, Bootstrap 按钮

按钮 按钮样式类背景颜色描述btn btn-default白色带渐变的默认灰色按钮。btn btn-primary深蓝色在一组按钮中的主动作按钮。btn btn-success绿色替代默认按钮。btn btn-info浅蓝色成功或正确的行动。btn btn-warning橙色表明此操作应注意。btn btn-danger红色表示危险或潜在的负…

Linux使用:文件与文件系统的压缩、打包与备份

8.2 Linux系统的压缩指令压缩文件扩展名:*.tar,*.tar.gz,*.tgz,*.gz,*.Z,*.xz 一般需要先用tar将许多文件打包成一个文件,再进行压缩。(因为gzip、bzip2、xz一次只能针对一个文件来压缩和解压缩)。gzip后缀:*.gz 可以解开:compress,zip,gzip压缩的文件(*.Z,*.zip,*.gz) gzip…

服务器上搭建oneindex

更新php 由于需要 php5.6+ 版本,需要从php5.4更新yum provides php #自带的只有5.4版本rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm #更新源rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpmyum remove php-common -y #移…

SpringMVC 入门

SpringMVC开发步骤 添加依赖<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://mave…

20241123实验一《python程序设计》实验报告

标题“20241123 实验一《Python程序设计》实验报告” 实验报告模板如下: 20241123 2025.3.12 《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2411 姓名: 胡钧涛 学号:20241123 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 1.实验内容 1.…

MySQL的limit优化2

一、底层原理 在 MySQL 8.0 中,当使用 LIMIT offset, count 进行分页查询时,如果 offset 非常大(例如 LIMIT 200000, 10),性能会显著下降。 这是因为 MySQL 需要扫描 offset + count 行数据,然后丢弃前 offset 行,只返回最后的 count 行 二、基本语法与功能LIMIT子句的基…

20242216 2024-2025-2 《Python程序设计》实验一报告

20242126 2024-2025-2 《Python程序设计》实验x报告 课程:《Python程序设计》 班级: 2421 姓名: 邹清楠 学号:20242126 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(第一次调试时的选…

今日总结(计网以及对Android Studio的进一步学习)

所花时间:130minutes 代码量(行):130 博客量:8 了解的知识点:今天学习了计网的信道复用技术以及对于前一节课的通信系统中涉及的计算问题的复习。 主要为码元与比特的关系,一个码元所携带的比特数 = 1og2x其中x为状态数,比如在计算 中会告诉你状态数,以及码元传输速率…

python公选实验一

20242113《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2421 姓名: 陈铂翔 学号:20242113 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序,并进行调试分…

20243303 实验一《python程序设计》实验报告

学号 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级: XXXX 姓名: XXX 学号:XXX 实验教师:XXX 实验日期:2021年X月X日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序,并进行调试分析…

2024-2025-2 20244330《Python程序设计》实验一报告

2024-2025-2 20244330《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2443 姓名: 李馨逸 学号:20244330 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 1.实验内容 (1)熟悉Python开发环境; (2)进行Python运行、调试技能的学习与练习; (3)编…