CSS布局解决方案

CSS布局----flex弹性布局(移动端完美解决方案) Flexible Box 模型,通常被称为 flexbox,是一种一维的布局模型。它给 flexbox 的子元素之间提供了强大的空间分布和对齐能力。本文给出了 flexbox 的主要特性。 我们说 flexbox 是一种一维的布局,是因为一个 flexbox 一次只能处理一个维度上的元素布局,一行或者一列。作为对比的是另外一个二维布局网格布局,以后会和大家讲到 目录 1,如何使用 2, Flexbox的两根轴线 3, Flex 容器 4,API以及用例 1,- 如何使用-因为css用法过于简单,所以先给大家 阅读详情

原文地址:https://segmentfault.com/a/1190000013565024

几个名词

block元素特点
  • 总是在新行上开始;
  • 高度,行高以及顶和底边距都可控制;
  • 宽度缺省是它的容器的100%,除非设定一个宽度
  • <div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子。
inline元素
  • 和其他元素都在一行上;
  • 高,行高及顶和底边距不可改变;
  • 宽度就是它的文字或图片的宽度,不可改变。
  • <span>, <a>, <label>, <input>, <img>, <strong> 和<em>是inline元素的例子。

    inline-block元素

    将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。(准确地说,应用此特性的元素呈现为内联对象,周围元素保持在同一行,但可以设置宽度和高度地块元素的属性)。

居中布局

水平居中

1)使用inline-block+text-align
(1)原理、用法

  • 原理:先将子框由块级元素改变为行内块元素,再通过设置行内块元素居中以达到水平居中。
  • 用法:对子框设置display:inline-block,对父框设置text-align:center。

(2)代码实例

<div class="parent">
    <div class="child>DEMO</div>
</div>
.child{
    display:inline-block;
}
.parent{
    text-align:center;
}

(3)优缺点

  • 优点:兼容性好,甚至可以兼容ie6、ie7
  • 缺点:child里的文字也会水平居中,可以在.child添加text-align:left;还原

2)使用table+margin
(1)原理、用法

  • 原理:先将子框设置为块级表格来显示(类似 <table>),再设置子框居中以达到水平居中。
  • 用法:对子框设置display:table,再设置margin:0 auto。
    (2)代码实例
<div class="parent">
    <div class="child>DEMO</div>
</div>
.child {
    display:table;
    margin:0 auto;
}

(3)优缺点:

  • 优点:只设置了child,ie8以上都支持
  • 缺点:不支持ie6、ie7,将div换成table

3)使用absolute+transform
(1)原理、用法

  • 原理:将子框设置为绝对定位,移动子框,使子框左侧距离相对框左侧边框的距离为相对框宽度的一半,再通过向左移动子框的一半宽度以达到水平居中。当然,在此之前,我们需要设置父框为相对定位,使父框成为子框的相对框。
  • 用法:对父框设置position:relative,对子框设置position:absolute,left:50%,transform:translateX(-50%)。
    (2)代码实例
<div class="parent">
    <div class="child>DEMO</div>
</div>
.parent {
    position:relative;
}
.child {
    position:absolute;
    left:50%;
    transform:translateX(-50%);
}

(3)优缺点

  • 优点:居中元素不会对其他的产生影响
  • 缺点:transform属于css3内容,兼容性存在一定问题,高版本浏览器需要添加一些前缀

4)使用flex+margin
(1)原理、用法

  • 原理:通过CSS3中的布局利器 flex 将子框转换为flex item,再设置子框居中以达到居中。
  • 用法:先将父框设置为display:flex,再设置子框margin:0 auto。

(2)代码实例

<div class="parent">
    <div class="child>DEMO</div>
</div>
.parent {
    display:flex;
}
.child {
    margin:0 auto;
}

(3)优缺点

  • 缺点:低版本浏览器(ie6 ie7 ie8)不支持

5)使用flex+justify-content
(1)原理、用法

  • 原理:通过CSS3中的布局利器flex中的justify-content属性来达到水平居中。
  • 用法:先将父框设置为display:flex,再设置justify-content:center。

(2)代码实例

<div class="parent">
    <div class="child>DEMO</div>
</div>
.parent {
    display:flex;
    justify-content:center;
}

(3)优缺点

  • 优点:设置parent即可
  • 缺点:低版本浏览器(ie6 ie7 ie8)不支持
垂直居中

1)使用table-cell+vertical-align
(1)原理、用法

  • 原理:通过将父框转化为一个表格单元格显示(类似 <td> 和 <th>),再通过设置属性,使表格单元格内容垂直居中以达到垂直居中。
  • 用法:先将父框设置为display:table-cell,再设置vertical-align:middle。

(2)代码实例

<div class="parent">
    <div class="child>DEMO</div>
</div>
.parent {
    display:table-cell;
    vertical-align:middle;
}

(3)优缺点

  • 优点:兼容性较好,ie8以上均支持

2)使用absolute+transform
(1)原理、用法

  • 原理:类似于水平居中时的absolute+transform原理。将子框设置为绝对定位,移动子框,使子框上边距离相对框上边边框的距离为相对框高度的一半,再通过向上移动子框的一半高度以达到垂直居中。当然,在此之前,我们需要设置父框为相对定位,使父框成为子框的相对框。
  • 用法:先将父框设置为position:relative,再设置子框position:absolute,top:50%,transform:translateY(-50%)。

(2)代码实例

<div class="parent">
    <div class="child>DEMO</div>
</div>
.parent {
    position:relative;
}
.child {
    position:absolute;
    top:50%;
    transform:translateY(-50%);
}

(3)优缺点

  • 优点:居中元素不会对其他的产生影响
  • 缺点:transform属于css3内容,兼容性存在一定问题,高版本浏览器需要添加一些前缀

3)使用flex+align-items
(1)原理、用法

  • 原理:通过设置CSS3中的布局利器flex中的属性align-times,使子框垂直居中。
  • 用法:先将父框设置为position:flex,再设置align-items:center。

(2)代码实例

<div class="parent">
    <div class="child>DEMO</div>
</div>
.parent {
    position:flex;
    align-items:center;
}

(3)优缺点

  • 优点:只设置parent
  • 缺点:兼容性存在一定问题
水平垂直居中

1)使用absolute+transform
(1)原理、用法

  • 原理:将水平居中时的absolute+transform和垂直居中时的absolute+transform相结合。详见:水平居中的3)和垂直居中的2)。
    见水平居中的3)和垂直居中的2)。

(2)代码实例

<div class="parent">
    <div class="child>DEMO</div>
</div>
.parent {
    position:relative;
}
.child {
    position:absolute;
    left:50%;
    top:50%;
    transform:tranplate(-50%,-50%);
}

(3)优缺点

  • 优点:child元素不会对其他元素产生影响
  • 缺点:兼容性存在一定问题

2)使用inline-block+text-align+table-cell+vertical-align
(1)原理、用法

  • 原理:使用inline-block+text-align水平居中,再用table-cell+vertical-align垂直居中,将二者结合起来。详见:水平居中的1)和垂直居中的1)。
    见水平居中的1)和垂直居中的1)。

(2)代码实例

<div class="parent">
    <div class="child>DEMO</div>
</div>
.parent {
    text-align:center;
    display:table-cell;
    vertical-align:middle;
}
.child {
    display:inline-block;
}

(3)优缺点

  • 优点:兼容性较好

3)使用flex+justify-content+align-items
(1)原理、用法

  • 原理:通过设置CSS3布局利器flex中的justify-content和align-items,从而达到水平垂直居中。详见:水平居中的4)和垂直居中的3)。
    见水平居中的4)和垂直居中的3)。

(2)代码实例

<div class="parent">
    <div class="child>DEMO</div>
</div>
.parent {
    display:flex;
    justify-content:center;
    align-items:center;
}

(3)优缺点

  • 优点:只设置了parent
  • 缺点:兼容性存在一定问题

(3)优缺点

  • 优点:简单
  • 缺点:不支持ie6

2)使用float+margin
(1)原理、用法

  • 原理:通过将左框脱离文本流,加上右框向右移动一定的距离,以达到视觉上的多列布局。
  • 用法:先将左框设置为float:left、margin-left,再设置右框margin-left。

(2)代码实例

 <div class="parent">
    <div class="left">
        <p>left</p>
    </div>
    <div class="right">
        <p>right</p>
        <p>right</p>
    </div>
</div>
.left {
    float:left;
    width:100px;
}
.right {
    margin-left:120px;
}

(3)优缺点

  • 优点:简单,易理解
  • 缺点:兼容性存在一定问题,ie6下有3px的bug。right下的p清除浮动将产生bug

3)使用float+margin(改良版)
(1)原理、用法

  • 原理:在1)的基础之上,通过向右框添加一个父框,再加上设置左、右父框属性使之产生BFC以去除bug。
  • 用法:先将左框设置为float:left、margin-left、position:relative,再设置右父框float:right、width:100%、margin-left,最后设置实际的右框margin-left。

(2)代码实例

<div class="parent">
    <div class="left">
        <p>left</p>
    </div>
    <div class="rigth-fix">
        <div class="right">
            <p>right</p>
            <p>right</p>
        </div>
    </div>
</div>
.left {
    float:left;
    width:100px;
    position:relative;
}
.right-fix {
    float:right;
    width:100%;
    margin-left:-100px;
}
.right {
    margin-left:120px;
}

4)使用table
(1)原理、用法

  • 原理:通过将父框设置为表格,将左右边框转化为类似于同一行的td,从而达到多列布局。
  • 用法:先将父框设置为display:table、width:100%、table-layout:fixed,再设置左右框display:table-cell,最后设置左框width、padding-right。

(2)代码实例

<div class="parent">
    <div class="left">
        <p>left</p>
    </div>
    <div class="right">
        <p>right</p>
        <p>right</p>
    </div>
</div>
.parent {
    display:table;
    width:100%;
    table-layout:fixed;
}
.left {
    width:100px;
    padding-right:20px;
}
.right,.left {
    display:table-cell;    
}

5)使用flex
(1)原理、用法

  • 原理:通过设置CSS3布局利器flex中的flex属性以达到多列布局。
  • 用法:先将父框设置为display:flex,再设置左框flex:1,最后设置左框width、margin-right。

(2)代码实例

<div class="parent">
    <div class="left">
        <p>left</p>
    </div>
    <div class="right">
        <p>right</p>
        <p>right</p>
    </div>
</div>
.parent {
    display:flex;
}
.left {
    width:100px;
    margin-right:20px;
}
.right {
    flex:1;
}

(3)优缺点

  • 优点:flex很强大
  • 缺点:兼容性存在一定问题,性能存在一定问题
全屏布局
用 ABAP CDS Table Function 把复杂计算下沉到 SAP HANA:从定义到 AMDP 实战与 Clean Core 落地 摘要 CDS table function 是 SAP S/4HANA 开发中的关键工具,它允许在 ABAP CDS 中调用由 HANA 原生执行的函数逻辑,并以表形式返回结果集。其核心价值在于:弥补 CDS 表达式不足,将复杂计算(如排序、分组、币种换算等)安全地推送到数据库层执行,同时保持 CDS 的可组合性。实现方式是通过 AMDP 框架,在 ABAP 类中编写 SQLScript 代码。使用时需注意参数设计应区分业务语义与过滤条件,并严格遵守 client-safe 原则以避免跨客户端数据泄露风险。 阅读详情

相关推荐

USC EE450 CSCI455 CSCI571 Midterm 总结

EE450 Compter Network                1.历年Midterm考题。(更新至2017年spring,如果大家有新的资源欢迎编辑)                 google drive:https://drive.google.com/drive/folders/0B_LCDxpiiXZ1cUNReFpZZHo4NG8?usp=sharing

Small_hour 7112

设计了一个 CSS 终极解决方案!

随着产品的迭代,发现现有的产品架构上存在很多的问题,比如性能方面、业务方面、团队协作方面等。作为一个老项目,已经无法再做进一步的优化和完善了,所以这次我们团队打算对整个项目进行一次彻底的重构。

小鹿动画学编程 1097

利用Ghidra与SVD插件实现STM32固件深度逆向分析

本文详细介绍了如何利用Ghidra逆向工程框架结合SVD插件,实现对STM32固件(.bin文件)的深度逆向分析。通过加载描述芯片外设寄存器的SVD文件,Ghidra能将晦涩的硬件地址操作转换为可读的寄存器符号,极大提升了对嵌入式固件中通信协议、安全校验等关键逻辑的分析效率。文章涵盖了从Java环境搭建、工具配置到实战逆向解析的完整流程。

peach的博客 943

程序员接私活必备的10款开源前端后台框架(1),灵魂拷问

前端校招精编面试解析大全点击这里免费获取完整版pdf查看!!(备注:前端)**前端校招精编面试解析大全点击这里免费获取完整版pdf查看。

2401_84097658的博客 1302

stm32学习笔记-启动文件

1、配置栈 Stack_Size EQU 0x00000400 AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size __initial_sp EQU:相当于C中的define,定义Stack_Size = 0x00000400。 AREA: 指...

某风吾起的博客 4529

多层感知机 Multilayer Perceptron | MLP

本文主要简单介绍了多层感知机的基本概念,优缺点,应用场景,建模时的注意事项,评价指标,实现方法,python示例和模型的参数等。

JasonH2021的博客 3万+

CSS常见布局解决方案

说起css布局,那么一定得聊聊盒模型,清除浮动,position,display什么的,但本篇本不是讲这些基础知识的,而是给出各种布局的解决方案。

jnfy的博客 1294

85-Halcon-- gen_cam_par_area_scan_division 函数功能(生成面阵相机镜头参数)

Halcon的gen_cam_par_area_scan_division算子用于生成面阵相机的镜头参数,支持除法畸变模型。该算子输出包含9个参数的元组,包括焦距(Focus)、畸变系数(Kappa)、像素尺寸(Sx,Sy)、主点坐标(Cx,Cy)和图像尺寸。文中详细解析了各参数含义、数学原理(包括畸变矫正公式和坐标转换),并提供了三个工业应用案例:高精度芯片尺寸测量、机器人焊接引导和大视野汽车表面检测。最后给出了完整的相机标定流程,涵盖参数生成、畸变校正和标定配置步骤,适用于工业视觉系统的精确标定需求。

weixin_45590420的博客 915

css遇到的各种问题及解决方案

不同的html id可以重名,不影响link了不同的css,里面有选择器重名的,后者会覆盖前面的,所以要把公用的,其他页面用到一部分的link到前面,本页的css写到最后,覆盖前面没用的。如果父元素有宽高,只有背景图,没有其他内容,且没有边框,给子元素加margin 父元素会被加宽,或margin被加到父元素上,是css bug。当块元素中直接插入定款定高的图片时,如果块元素不指定宽和高,图片就会有2像素左右的向下偏移。父元素加padding取代margin,需要父元素减去padding的高度,计算麻烦。

eshine Lau 的博客 484

搭建一个简单的 Django + Vue 项目

在本文中,我将为您详细介绍如何搭建一个简单的 Django + Vue 项目。Django 是一个使用 Python 编写的高级 Web 框架,而 Vue 是一个流行的 JavaScript 框架,用于构建用户界面。通过结合 Django 和 Vue,我们可以创建强大的全栈 Web 应用程序。创建 Django 项目设置 Django 后端创建 Vue 前端连接 Django 和 Vue让我们开始吧!

JfpBlockchain的博客 352

【大数据Java基础-Java基础01】环境搭建(一)Sublime Text3搭建Java编译环境(Windows系统)

1. 首先配置好Java环境变量 我的jdk版本是1.8.0_191,存放目录是C:\Program Files\Java,因此添加以下环境变量 (1)系统变量→新建 JAVA_HOME 变量,变量值为: C:\Program Files\Java\jdk1.8.0_191 (2)系统变量→找到 Path 变量→编辑,末尾加入: ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 如果Path变量末尾本身有“;”,则上述路径前面则不需要加“;” (3)系统变量→新建 CL

微信搜:import_bigdata,大数据领域硬核原创作者 554

CSS布局解决方案(终结版)

前端布局非常重要的一环就是页面框架的搭建,也是最基础的一环。在页面框架的搭建之中,又有居中布局、多列布局以及全局布局,今天我们就来总结总结前端干货中的CSS布局。 居中布局 水平居中 1)使用inline-block+text-align(1)原理、用法 原理:先将子框由块级元素改变为行内块元素,再通过设置行内块元素居中以达到水平居中。...

weixin_33754913的博客 309

【ArcGIS微课1000例】0145:如何按照自定义形状裁剪数据框?

使用绘图 工具条上的新建圆工具 可创建一个椭圆,使其包含要在该数据框中显示的数据范围。. 在基础工具工具条上单击选择元素工具 ,然后选择圆形。. 在内容列表中右键单击要裁剪的数据框,然后单击属性。. 单击裁剪选项下拉菜单,然后选择裁剪至形状。. 单击数据框属性 对话框中的数据框选项卡。还可以更改裁剪形状轮廓的边框选项。打开软件,添加配套实验数据包中。修改椭圆的属性,使其透明。. 单击所选图形的轮廓。. 单击指定形状按钮。

智慧空间实验室 953

CSS 布局解决方案之延伸篇

看到了一篇比较好的CSS布局解决方案的文章。 https://segmentfault.com/a/1190000013565024 然后自己做一点延伸,再把代码敲出来,加深下印象。 水平居中:inline-block + text-align CSS: &lt;style&gt; .child1 { display: inline-bl...

sunq1982的博客 557

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

CSS3响应式布局中常见的问题及解决方案

同时,随着前端技术的不断发展,未来还将有更多的技术和工具来帮助我们实现更加高效、灵活的响应式布局。此外,随着前端框架和组件库的不断发展,如React、Vue、Angular等,它们也为我们提供了丰富的响应式组件和工具,使得我们可以更加高效地构建响应式应用。同时,随着前端技术的不断发展,我们也将迎来更多的机遇和挑战。同时,我们也需要保持对新技术和新方法的关注,以便在响应式设计的道路上不断前行,为用户提供更加出色的体验。因此,应简化导航菜单的结构和层级,减少表单的输入框和按钮数量,以提高用户的操作便利性。

aronSandy的博客 1130

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Div + Css布局注意要点及解决方案

1、对div设置水平居中的问题。    只要在这个div里面加上一句"margin:auto"即可;    例如:  相应的css为:#center {     margin:auto;}2、用float属性的div布局问题。  例如:(其中floatA、floatB的属性已经设置为float:left;)  这里

刘丹云开源笔录 604

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

CSS之常见布局解决方案

分享一下我一年前端自学路上的学习笔记。若有侵权,请联系我,我立即删除或标明出处。 CSS布局是每个前端开发工程师的基本功。下面我列出一些常见布局及解决方案。代码不完整,我只写出重要代码。 水平居中布局 //简单的写一下HTML结构 &lt;div class="parent"&gt; &lt;div class="child"&gt;水平居中布局&lt;/div&gt; ...

zuoypx的博客 449

详解CSS布局中浮动问题的四种解决方案

一、起因: 子盒子设置浮动之后效果: 由此可见,蓝色的盒子设置浮动之后,因为脱离了标准文档流,它撑不起父盒子的高度,导致父盒子 高度塌陷 。如果网页中出现了这种问题,会导致我们整个网页的布局紊乱 二、解决方案: 父盒子设置固定高度------------------给父元素添加固定的高度 内墙法 -------------------------------在父元素的后面添加一个空的div添加样式为 clear:both 伪元素清除法-------------------------给.

Strongkiss的博客 1130

html布局乱了怎么办,CSS display:block显示布局错乱解决方案

本文向大家介绍一下如何解决CSSdisplay:block在Firefox下显示布局错乱问题,按照常理,对于某一单元行需要显示时,使用CSS display:block属性,在IE浏览器中显示正常,但是当用Firefox浏览时却出现了布局错乱的问题,这里和大家分享一下解决方法。CSS display:block在Firefox下显示布局错乱问题按照常理,对于某一单元行需要显示时,使用CSS di...

weixin_39898733的博客 1799

css 解决方案-等高布局

等高布局 *{ margin:0; padding:0; } body{ font-family:"Lucida Console", Monaco, monospace,"宋体"; font-size:16px; } a,img{ border:0 none; } .wrap{ wid

江湖再见 999

3 个 CSS 布局坑让我加班到凌晨:原理剖析与解决方案

Flex 容器的布局计算时间比 Grid 快 12-18%(在低端 Android 设备上更明显)Flex 的回流范围通常更小,因为它是一维布局配合和flex-grow,可实现更精细的空间分配控制不过,Grid 在复杂二维布局(如仪表盘、卡片网格)中优势明显。用 Flex 处理 90% 的一维布局,Grid 仅用于特定二维场景,如电商首页的商品网格。CSS 布局问题从来不是 "玄学",而是对浏览器渲染机制和规范细节的理解不足。坑点本质原因最佳实践垂直居中失效。

还有更多的事情要去做。 591

CSS 常用布局及解决方案

CSS 常用布局包括元素的水平、垂直居中,单栏布局、三栏布局等,本文分析多种情况下的布局方案。 一、居中 (1) 水平居中 子元素为行内元素 <div class="parent parent-box"> <span class="child">子元素为行内元素</span> </div> .parent-box { width: 200px; height: 100px; border: 1px solid purple; } /*

HopelessRomantic的博客 265
上一篇: 排序(上)
扬扬羊
博客等级 码龄9年 11粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值