水平+垂直布局-css (借鉴)

1. 水平居中

  • 方法一:margin:0 auto; (最常用的居中布局方式)
  • 方法二:text-align和inline-block的结合(设置父元素的text-align为center)。

    这种方式最好应用于图片、按钮、文字之类的居中模式,否则就需要借助inline-block来进行居中布局。

  • 方法三:position绝对定位来实现居中布局。

    适用于块级元素不给出宽高的情况下(需要借助transtrom的tanslateX方法)。

#parent{position: relative;
}
#child{position: absolute;top: 0; left: 50%; transform: translateX(-50%); } 
  • 方法四:利用flex弹性布局的一个属性。

    子元素宽度已知的情况下

#parent{display: flex;justify-content: center;
}
  • 其他还有很多方法,一般用的不太多。并且各种方法优缺点不一样,可选择性使用。

2. 水平居中及垂直居中

  • 方法一:先说一种神奇的方式吧,
    1. 子元素 div 绝对定位
    2. 父元素需要被定位
    3. 子元素 top、bottom、left、right 四个位置值均为 0
    4. 子元素 margin: auto;

下面代码是可以实现的,但还有点问题,大家帮小花看看~

#parent{width: 100%;height:100%; position: fixed; } #child{ width: 400px; height: 200px; position: absolute; top: 0; bottom: 0; left: 0; right: 0; margin: auto; background-color: #ccc; } 
  • 方式二:利用position的绝对定位及负边框来实现。

    #parent{position: fixed;width: 100%;height: 100%; } #child{ position: absolute; left: 50%; top: 50%; width: 400px; height: 200px; margin-top: -100px; margin-left: -200px; background-color: #ccc; } 

    对于未给出宽高的元素,又需要请transform登场了,同时需要做好各浏览器的兼容。对于我这种懒癌患者,就不给出兼容代码嘞~

  • 其他应该还有一些方法,暂时还没想到,等写出来了再补补(哦对了,忘了说flex了,算了还是不写了)

3. 左边固定右边自适应的两列布局

我猜吧,大家对这种布局方式最熟悉不过了,平时用的也会比较多,所以呢,你们写的应该都会比我的好~

  • 方式一:float+margin的方式

    这种方式一定要记得给父元素清除浮动啊,不然就尴尬了呢,这里插播一种全局性(这个词似乎不太对)的清除浮动的伪元素方法.

    .clearfix:after {content: '.';height: 0; overflow: hidden; clear: both; display: block; visibility: hidden; } .clearfix { zoom: 1; <!--hack--> } 

    看起来有点小复杂啊,这里不分析这种方法的原理,记住就好了。当然你也可以直接借助触发BFC的方式来解决(偷偷告诉你,常用的方式就是给你的父元素设置overflow: hidden;啦)。

哦+语气~好像跑偏了,说好的布局呢,见下诉代码:

#left{float: left;width: 100px;
}
#right{ margin-left: 120px; } 
  • 方式二:float+overflow的方式

这就是传说中利用BFC的规则来实现两列布局啊啊啊!

这种方式直接不需要清除浮动什么的就可以了,也不会影响前后文,用起来比较爽丫。

#left{float: left;width: 100px;margin-right: 20px; <!--好歹留个空啊嘿嘿-->
}
#right{overflow: hidden;
}
  • 方式三:float+margin+position的方式

这个方式呢也用到过,但是要考虑的比较多一点,不过其实也还好。
接下来请看实现代码:

#parent{position: relative;
}
#left{float: left;width: 100px; background-color: #ccc; } #right{ position: absolute; top: 0; left: 120px; background-color:pink; } 

这种方式实现起来很简单,但是对后文是有影响的,需要自己解决一下,懒小花就不写啦~

  • 方式四:flex方式

    这个呢,坑肯定是比较多的,建议用在小范围的布局,当然某些时候用起来确实比较爽歪歪啦

    #parent{display: flex;
    }
    #left{width: 100px; margin-right: 20px; } #right{ flex: 1; } 
  • 其他的吧,我暂时还没用到也没写到~网上一搜会有好多好多精讲的。

4. 左边自适应右边固定

话说其实我就只写了一种方法,我都有点不好意思放上来了,不管了,小花的脸皮比较厚,不怕!

  • 方式一: 当然还是position
    反正很多情况都可以用position来解决,但是,同时也会有一些其他问题出现,所以,自行思考用不用~
    #parent {position: relative;
    }
    #left {margin-right:220px; } #right { position: absolute; right:0; top:0; width: 200px; } 

5. 两边固定中间自适应的三列布局

其实这个布局用的也挺多的啊哈,嗯,昨天写的作业就是这个!

  • 方式一:纯float方式

    注意:

    1. 左侧元素与右侧元素优先渲染,分别向左和向右浮动
    2. 中间元素在文档流的最后渲染,自动插入到左右两列元素的中间,随后设置 margin 左右边距分别为左右两列的宽度,将中间元素调整到正确的位置。
.left{float: left;width: 200px;height: 200px; } .right{ float: right; width: 100px; height: 100px; } .middle{ margin:0 120px 0 220px; } 

但凡用float的时候都要想一下父元素上清除浮动这个问题!

  • 方式二:position的绝对定位

    其实感觉跟float的原理差不多,都是将左右两侧的块先固定好,再对中间部分进行处理,只不过自己可以在不同情况下选择float或者position。

.parent{position: relative;
}
.left{position: absolute;width: 200px; height: 200px; top: 0; left: 0; } .right{ position: absolute; top: 0; right: 0; width: 100px; height: 100px; } .middle{ margin:0 120px 0 220px; } 
  • 方式三:flex的弹性布局

不得不说的是其实很多布局都可以用flex来实现(简单粗暴嘿嘿),但是flex的兼容性不是很好,并且还有别问题,所以保险起见还是选择常用的,这里简单介绍下。

.parent{display: flex;
}
.left{width: 200px; height: 200px; } .right{ width: 100px; height: 100px; } .middle{ flex: 1; margin:0 20px; } 
  • 方式四:最后该淘宝的双翼布局闪亮登场了

转载于:https://www.cnblogs.com/hehong/p/6492907.html

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

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

相关文章

安富莱DAC8653模块

产品规格&#xff1a;1、供电电压 &#xff1a; 2.7 - 5.5V 【3.3V供电时&#xff0c;输出电压也可以到正负10V】2、通道数&#xff1a; 2路 &#xff08;通过1片DAC8563实现&#xff09;3、输出电压范围 &#xff1a; -10V ~ 10V 【客户可以自己更改为 0-10V输出范围。使…

AD16 SCH原理图打开正常,PCB图纸打开为空白或仍是上一个界面的解决方法

重新安装AD16并激活后&#xff0c;发现SCH图纸打开正常&#xff0c;但打开PCB图纸时要么显示一片空白&#xff0c;要么显示的还是上一屏的内容&#xff0c;重启AD16软件或者重启电脑都没有用。 【问题原因】电脑显卡驱动有问题 【解决方法】更新或重新安装电脑显卡驱动 step…

flex布局应用与踩坑

一、预告本文不是一篇入门的文章所有请符合以下条件的战斗人员绕道&#xff1a; 1、初学前端&#xff0c;对前端的传统布局还不是很熟悉的人 2、后端人员对前端不打算深入学习的同学 二、开篇flex布局原本是好几个月前就一直想学习的东西&#xff0c;当时flex布局还算是比较新鲜…

RT-Thread I/O设备模型

I/O设备指的是嵌入式系统中的一些Input输入/Output输出设备&#xff0c;输入输出设备是嵌入式系统重要的组成部分。输入和输出设备可以看做是计算机系统和外界进行沟通的桥梁&#xff0c;因此在计算机组成原理中输入输出设备是重要的组成部分。 计算机组成原理中的5大组成部分…

如何使用易我数据恢复向导恢复数码相机删除的图片

1 使用"易我数据恢复向导"的高级恢复(务必将数码相机的存储卡取出单独插入SD卡槽,而不是直接用数据线连接到电脑上,这样存储卡才能以磁盘方式显示) 2 选中对应磁盘,点击下一步 3 如果出现"分区参数不正确"提示&#xff0c;直接取消即可开始搜索 4 搜索完…

RT-Thread对GPIO操作两种方式的区别:1)通过设备操作接口2)直接通过通用GPIO设备驱动

在学习RT-Thread设备驱动框架时&#xff0c;看到潘多拉开发板的RT-Thread例程资料中的文档《AN0002-RT-Thread-通用 GPIO 设备应用笔记》有如下描述&#xff0c;因此产生使用文档中未使用的方式1&#xff09;通过设备操作接口 方法实现GPIO操作的想法&#xff01; 使用潘多拉开…

英语----情态动词(下)

should 应该 竟然 Youd should go to school right now. I should help him. How should i know. Im surprised tha he that he should be so rude to you. it worries me its a pity. You cant imagine.... ought to // 用在比较严肃的场合 You ought to take car…

清华大学-曾鸣-《ARM微控制器与嵌入式系统》I2C总线(一)

I2C是一种双向2线制同步串行通讯接口&#xff0c;是一类非常经典的串行总线通讯&#xff0c;理解好I2C通讯会帮助理解USB通讯、以太网通讯中的握手、数据帧等环节。 I2C的发展历史&#xff1a; SPI串行通讯主要是由MOTOROLA公司提出的&#xff0c;MOTOROLA公司的半导体部门独立…

清华大学-曾鸣-《ARM微控制器与嵌入式系统》I2C总线(二)

I2C&#xff08;Inter IC Bus&#xff09;的通讯数据帧&#xff1a; SCL线无方向区分&#xff0c;SDA线上有数据的流动方向。上图中灰色的代表的是主机向从机发送数据&#xff0c;此时SDA线的电平控制权由主机掌控&#xff0c;从机只能监听该线上的电平状态。白色代表的是从机向…

window.open 和showModalDialog的返回值

方法&#xff1a; 1: 在父级页面 test.aspx 的点击<input type"button" id"btnShow" οnclick"showItem();" value"显示子窗体"/>按钮触发 &#xff0c;然后 &#xff1a; <script language"JavaScript" type&qu…

RT-Thread I2C设备驱动框架的对接使用

I2C和SPI是MCU和板载芯片之间最常用的通讯方式&#xff0c;现在先介绍下I2C总线。I2C的基本原理也很简单&#xff0c;只需要两根线&#xff08;时钟线SCL和信号线SDA&#xff09;即可实现挂载在I2C总线上设备之间的相互通讯。I2C协议并未规定I2C总线上哪个是主机&#xff1f;哪…

给lnmp一键包中的nginx安装openresty的lua扩展

lnmp一键包&#xff08;https://lnmp.org&#xff09;本人在使用之后发现确实好用&#xff0c;能帮助我们快速搭建起lnmp、lamp和lnmpa的web生产环境&#xff0c;因此推荐大家可以多试试。但有的朋友可能需要使用openresty的lua扩展&#xff0c;这篇文章就会教你们怎么在军哥的…

RT-Thread 简介及架构

RT-Thread&#xff0c;全称是 Real Time-Thread&#xff0c;顾名思义&#xff0c;它是一个嵌入式实时多线程操作系统&#xff0c;基本属性之一是支持多任务&#xff0c;允许多个任务同时运行并不意味着处理器在同一时刻真地执行了多个任务。事实上&#xff0c;一个处理器核心在…

Linux中通过Socket文件描述符寻找连接状态介绍

针对下文的总结&#xff1a;socket是一种文件描述符 进程的打开文件描述符表 Linux的三个系统调用&#xff1a;open&#xff0c;socket&#xff0c;pipe 返回的都是一个描述符。不同的进程中&#xff0c;他们返回的描述符可以相同。那么&#xff0c;在同一个进程中&#xff0c;…

iOS HTML标签字符实体,转译字符串归类大全 【转载】

为什么要用转义字符串&#xff1f; HTML中<&#xff0c;>&#xff0c;&等有特殊含义&#xff08;<&#xff0c;>&#xff0c;用于链接签&#xff0c;&用于转义&#xff09;&#xff0c;不能直接使用。这些符号是不显示在我们最终看到的网页里的&#xff0c…

RT-Thread在github上的教程中图片显示不出来问题的解决方法

在github上查看RT-Thread STM32系列BSP制作教程时发现教程中所有的图片都加载不出来&#xff0c;非常影响教程的阅读使用。 使用记事本打开文件&#xff1a; C:\Windows\System32\drivers\etc\hosts 将如下内容复制粘贴到hosts文件末尾&#xff1a; # GitHub Start 140.82.11…

贝叶斯原理及其推断简介

1、贝叶斯公式及应用&#xff1a; 详见&#xff1a;链接ruanyifeng.com/blog/2011/08/bayesian_inference_part_one.html 转载于:https://www.cnblogs.com/1995hxt/p/6527604.html

在STM32CubeMX生成的MDK5工程上添加RT-Thread Nano后双击工程名无法打开.map文件的解决方法

当我们基于STM32CubeMx完成芯片的基础配置&#xff0c;再将RT-Thread Nano添加到工程编译完成之后。双击工程名称发现无法打开工程的.map文件&#xff0c;.map文件是STM32开发中非常重要的一个文件&#xff0c;map文件中详细描述了各个函数在ROM中的存储地址和大小&#xff0c;…

Oracle trunc()函数的用法

1、取当年的第一天和当年的最后一天 select trunc(sysdate,YYYY),add_months(trunc(sysdate,YYYY),12)-1 from dual tselect to_char(trunc(add_months(last_day(sysdate), -1) 1), yyyy-mm-dd) "本月第一天", to_char(last_day(sysdate), yyyy-mm-dd) "本月最…

STM32实现USB虚拟串口原理(下)

中断传输应用如主机定期间隔送鼠标读取当前的输入信息&#xff0c;或键盘的输入键值 同步传输应用于音视频等对延迟有严格要求的场合 大容量传输对实时性没有太高要求&#xff0c;对延迟有较大的容忍&#xff0c;且在协议层面并未规定最大的容忍延迟时间&#xff0c;但能从协议…