当前位置: 首页 > 编程日记 > 正文

如何用CSS快速布局(一)—— 布局元素详细

要快速进行网页排版布局,则必须对布局的元素有清晰的了解,才不会总是在细节处出错。这一篇先详解有关布局的因素作为布局基础:块级元素and内联元素、盒模型、准确定位、元素对齐、样式继承。下一篇则重点描述快速布局思路。

一、什么是块级元素和内联元素

1,块级元素:

display:block表现出来的特点是折行的, 一般来说可以包含块级元素和内联元素;
例外:
P 元素,只能包含内联元素,而不能包含块级元素。
"form"这个块元素比较特殊,它只能用来容纳其他块元素。

2,内联元素:

display:inline表现出来是不换行的,内部只能包含内联元素。
像“span”这样的行内元素,没有自己的独立空间,它是依附于其他块级元素存在的,因此,对行内元素设置高度、宽度、内外边距等属性,都是无效的。 其实你需要知道的行内元素就是 span 和 a

3,浮动元素自动设置为"block"元素

不管是block还是inline定义了浮动之后,可以定义高度,宽度.
<a>正常情况下是不能定义高度的。宽度倒是可以定义,但是对鼠标有反应的只有文字部分
如果加上float:left的话,能定义高宽,整块对鼠标有反应 但是 它是横向菜单,
设置display:inline;这个属性能够修复著名的IE双倍浮动边界问题。↓(貌似这个问题只存在于IE6?)
http://www.zzzszy.com/a/2016/0927/896160.html
块元素(block element)内联元素(inline element)
* address - 地址
* blockquote - 块引用
* center - 举中对齐块
* dir - 目录列表
* div - 常用块级容易,也是css layout的主要标签
* dl - 定义列表
* fieldset - form控制组
* form- 交互表单
* h1 - 大标题
* h2 - 副标题
* h3 - 3级标题
* h4 - 4级标题
* h5 - 5级标题
* h6 - 6级标题
* hr - 水平分隔线
* isindex - input prompt
* menu - 菜单列表
* noframes - frames可选内容,(对于不支持frame的浏览器显示此区块内容
* noscript - )可选脚本内容(对于不支持script的浏览器显示此内容)
* ol - 排序表单
* p - 段落
* pre - 格式化文本
* table - 表格
* ul - 非排序列表
* a - 锚点
* abbr - 缩写
* acronym - 首字
* b - 粗体(不推荐)
* bdo - bidi override
* big - 大字体
* br - 换行
* cite - 引用
* code - 计算机代码(在引用源码的时候需要)
* dfn - 定义字段
* em - 强调
* font - 字体设定(不推荐)
* i - 斜体
* img - 图片
* input - 输入框
* kbd - 定义键盘文本
* label - 表格标签
* q - 短引用
* s - 中划线(不推荐)
* samp - 定义范例计算机代码
* select - 项目选择
* small - 小字体文本
* span - 常用内联容器,定义文本内区块
* strike - 中划线
* strong - 粗体强调
* sub - 下标
* sup - 上标
* textarea - 多行文本输入框
* tt - 电传文本
* u - 下划线
* var - 定义变量

4,可变元素

可变元素为根据上下文语境决定该元素为块元素或者内联元素。
* applet - java applet
* button - 按钮
* del - 删除文本
* iframe - inline frame
* ins - 插入的文本
* map - 图片区块(map)
* object - object对象
* script - 客户端脚本

5,display:inline-block;

维持块级元素可设置宽高,但又能像内联元素一样和其他内联元素置于一行。

二、盒模型

三、如何定位——相对定位、绝对定位、浮动

相对定位:指相对于文档流中的其他已定义的元素位置进行定位。

static(默认值):如果使用默认值,在CSS中为元素定义的top,left,right,bottom.z-index都不会生效。
relative:相对元素本身进行移动。

绝对定位:会脱离正常的文档流,不再占据空间。

absolute:相对一个不为static的父元素进行绝对定位,如果不指定父元素的position,absolute将相对整个html文档进行绝对定位。会优先显示于正常文档流定位元素以及float元素。
fixed:相对浏览器窗口进行定位,不论网页如何滚动,该元素始终停留在屏幕的某个位置上。

浮动:float

脱离文档流——相对父元素大小调整位置。如果父元素宽度为100,两个子元素宽度分别为200,则依旧显示为上下层次,而不是左右。
外盒子——会优先显示于正常文档流定位元素。内盒子——弱于块级元素,强于内联元素

重点!定位元素与文档流显示关系

1,正常文档流之间的内外部盒子显示关系:

复制代码
代码结构如下(粗略展示)
<div>黄色块正方形<div>红色块</div><div>红色块</div>
</div>
<div>蓝色块正方形</div>
复制代码
黄色和蓝色为外部文档流,红色的为黄色块的两个内部文档流。
外部盒子为外部文档流,内部盒子有自己的文档流,互不干扰,但(非自身父元素的)外部文档流会优先显示于内部文档流。

2,内部盒子浮动元素和内部文档流元素关系:

  • 内联元素和浮动元素的优先级:

正常文档流中,<a>内联元素和块级元素各占一行。

然而当设置为浮动元素后,文档流内联元素让位于浮动元素(<a>先后于<div>定义结果一样)。如下:
还会出现文字包绕现象:
  • 块级元素和浮动元素优先级
当块级元素先于浮动元素定义时,浮动元素换行排后。当浮动元素先定义时,脱离文档流,不对正常文档流的块级元素造成影响。

3,内部盒子浮动元素和外部文档流内部元素关系:

浮动元素覆盖外部文档流元素,但不占据空间。
绿色块和图片是蓝色块的内部元素,可见,块级元素照正常文档流显示,但内联元素img还是会让步于浮动元素,即使是外部文档流的浮动元素。

4,兄弟元素绝对定位和浮动的优先关系

蓝色块为黄色内部块的absolute定位元素,且先于红色块设置div。红色块为Float定位元素,被absolute覆盖。

5,绝对定位和文档流元素的优先关系&相对定位元素的优先关系

绝对定位position:absolute。
1,相对一个不为static的父元素进行绝对定位,如果不指定父元素的position,absolute将相对整个html文档进行绝对定位。
2,如果没有设置top\left\bottom\right,则其顶端和左侧将与原文档流位置一致(即跟没有设置position一样),但又会覆盖掉外部文档流内部浮动元素多出部分。
下图为蓝色块设置position:absolute;
(注:黄色块(内含红色和绿色子元素)和蓝色块(内含绿色子元素)是兄弟元素)
调换下顺序,蓝色块首先设置div,position为absolute。黄色块没设置position,即默认static。因为脱离了文档流,absolute元素优先显示。
设置黄色块position为relative,黄色块覆盖绝对定位元素。即当相对定位元素后于绝对定位元素定位时,相对定位元素优先显示。

总结:

1,正常文档流下,外部盒子优先显示于先定义元素的内盒子(如果超出会被覆盖)。块级元素和内联元素不会在同一行。

2,对内外部文档流,浮动元素脱离文档流,对于先定义的元素按正常文档流显示(让位块级,挤开内联),对后定义的元素不造成布局影响,但却影响正常文档流的内联元素展示,表现为内联元素依旧会被浮动元素“挤开”(不论哪里的内联元素,都不会被覆盖在浮动元素之下)

3,绝对定位元素优先显示于浮动元素。

4,不设置具体值的绝对定位元素会按正常文档流排列,但脱离文档流,不对后定义元素造成影响。

5,如果兄弟元素设置了position:relative;当先于绝对定位元素定义时,绝对定位元素优先显示于相对定位元素。

当后于绝对定位元素定义时,相对定位元素优先显示于绝对定位元素。

四、如何居中对齐

水平居中:

1.实现行内元素的居中。方法:在行内元素外面的块元素的样式中添加:text-align:center;

2.实现块级元素的水平居中。

方法一:margin:0 auto;

注意:如果块级元素是body的直接子元素,不设置宽,则默认100%,看不出效果;不设置高,且div中没有内容,则高度默认为0。因此,一定要同时设置块级元素的宽和高,这样才能看出来效果。对于在一个div中的另一个div希望居中,也可以使用这个方式,因为这时的margin是相对于其父元素而言的。

方法二:使用绝对定位和负边距。

position:absolute;

left:50%;                 ——相对于父元素向左移动50%宽度

margin-left:-50px;    ——移回自身宽度的一半

垂直居中

1.行内元素的垂直居中

方法一:让字体垂直居中,line-height设置为父元素高度。

方法二:设置padding让其垂直居中。

方法三:父元素设置line-height,行内元素设置vertical-align:middle。

2.块级元素的垂直居中。

方法一:使用绝对定位和负边距。

方法二:在父元素中添加display:flex;align-items:center;即可实现竖直居中。

实现水平和垂直居中

  方法一:使用绝对定位和负边距

  方法二:使用display:flex

在父元素的样式中添加display:flex;align-items:center实现竖直居中,justify-content:center;实现水平居中

  方法三:同样使用display:flex.在父元素中设置display:flex;在子元素中设置margin:auto。

  方法四:使用css3属性——translate()变形函数

position: absolute; top:50%; left:50%; transform:translate(-50%,-50%);

参考文章:css居中那点事儿

五、关于样式继承

盒模型样式是不可继承的,例如width、height(宽高)、border(边框)、margin(边距)、padding(补白)和背景等
vertical-align不可继承
可继承属性
color
cursor
direction
font
letter-spacing
line-height
list-style
text-align
text-indent
text-shadow
text-transform
whitewhite-space
word-break
word-spacing
word-wrap
writing-mode

》转载

转载于:https://www.cnblogs.com/wenJiaQi/p/6329632.html

相关文章:

iOS 改变字符串中数字的颜色

匹配中文字符 [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内) [^\x00-\xff] 匹配网址&#xff1a;[a-zA-z]://[^\s]* 匹配国内电话 \d{3}-\d{8}|\d{4}-\{7,8} 匹配腾讯QQ号 [1-9][0-9]{4,} 匹配18位身份证号^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$ Swift String…

jpg在线合并jpg_JPG如何运作

jpg在线合并jpgby Colt McAnlis通过Colt McAnlis JPG如何运作 (How JPG Works) The JPG file format was one of the most technologically impressive advancements to image compression to come on the scene in 1992. Since then, it’s been a dominant force in represe…

革命就是请客吃饭(案例分析吧)

前不久路过南京, 拜会了本科同学. 刚好他要见个青年才俊谈些事情, 于是就神神秘秘地把我拉了过去. 一路高谈阔论, 指点江山, 忆往昔峥嵘岁月之后, 此次"拜访"的目的也渐渐清晰起来. 我们所要见的人是位年轻的创业者, 他有些移动互联网的点子, 想和我们分享下, 并尝试…

TextView-- 测量文字宽度

https://my.oschina.net/lengwei/blog/637380; http://blog.csdn.net/mare_blue/article/details/51388403; http://blog.csdn.net/baidu_31093133/article/details/52413893; --1,Android中调用Paint的measureText()方法取得字符串显示的宽度值: public static float GetTextW…

swift 简单风格的Toaster

简单风格的Toaster Toaster //1 弹出文本 "Hello World" 延迟时间 2 展示时间 1 Toast(text: "Hello World", delay: 2, duration: 1).show();//2 初始化toast 方法 let toast Toast(text: "你好世界"); toast.show(); toast.cancel();// 3 …

工业革命前数千年人口经济_我们已经进行了数千年的编程

工业革命前数千年人口经济by Tautvilas Mečinskas由TautvilasMečinskas 我们已经进行了数千年的编程 (We have been programming for thousands of years) Computer programs are all around us. We interact with them every day. It looks as if software is becoming mor…

1-flutter 安装步骤

flutter 安装步骤 1 下载SDK SDK 下载地址 2 解压压缩包 将sdk 文件夹丢进系统的应用程序&#xff08;Application&#xff09;的目录 3 配置环境变量 命令行 open ~/.bash_profile &#xff0c;然后在bash 文件中写入下面配置 export PATH$PATH:/Applications/flutter/bi…

codevs1258 关路灯(☆区间dp)

1258 关路灯 时间限制: 1 s空间限制: 128000 KB题目等级 : 大师 Master题目描述 Description多瑞卡得到了一份有趣而高薪的工作。每天早晨他必须关掉他所在村庄的街灯。所有的街灯都被设置在一条直路的同一侧。 多瑞卡每晚到早晨5点钟都在晚会上&#xff0c;然后他开始关灯。开…

BroadcastReceiver自学笔记

1. 使用步骤&#xff1a; 1.1 声明Intent Intent intent new Intent("name");------静态常用 IntentFilter filter new IntentFilter("name");--------动态常用 1.2 注册 1.3 接收&#xff1a;利用action或者Bundle 在OnReceive()中&#xff0c;接收信息…

小狗钱钱_小狗设计

小狗钱钱by Patryk Adaś通过PatrykAdaś 小狗设计 (Design for doggies) Education should be universal and free for everyone.教育应该是普及的&#xff0c;对所有人来说都是免费的。 When I first entered the field, designers were patient with me. They gave me fee…

层化(stratification)的方法

有时候我们会遇到调整后的模型反而不如调整前表现好的情况&#xff0c;这可能和数据的随机分割有关系。在这个不平衡的数据情况下&#xff0c;最好用层化&#xff08;stratification&#xff09;的方法&#xff0c;比如&#xff1a; from sklearn.cross_validation import Stra…

零基础入门jQuery视频教程

零基础入门jQuery最新版开发.NET富客户端应用(选择器、DOM操作、事件和动画、Ajax应用、插件、Mobile)课程分类&#xff1a;.NETJquery适合人群&#xff1a;初级课时数量&#xff1a;35课时用到技术&#xff1a;javascript,ajax,jquery,handler涉及项目&#xff1a;各知识点的项…

2-flutter 之HelloWorld

widget 在flutter 中&#xff0c;几乎所有的东西都是widget&#xff0c;本身是用户界面的基本构建快&#xff0c;将widget组成一个层次结构&#xff0c; 调用widget树。每一个窗口widget都嵌套在父窗口widget中&#xff0c;并且从其父窗口中继承属性。甚至应用程序对象本身也…

浏览器获取浏览历史_浏览器历史的未来

浏览器获取浏览历史by Patryk Adaś通过PatrykAdaś 浏览器历史的未来 (The Future of Browser History) I am really unsatisfied with the current state of Browser History. I think that this is the most underestimated feature of every modern web browser. Let’s t…

【水】JSOI完美的对称

完美的对称 题目描述 在峰会期间&#xff0c;必须使用许多保镖保卫北约组织的各国代表。代表们除了由他自己的随身保镖保护外&#xff0c;组委会还指派了一些其他的特工和阻击手保护他们。为了使他们的工作卓有成效&#xff0c;使被保卫的人的安全尽可能得到保障&#xff0c;保…

3-flutter 项目结构 资源 依赖

1 项目的名称 android 安卓相关工程文件 build 项目的构建输出目录 ios ios 相关的部分工程文件 lib 项目中的dart 源文件 src 包含其他的源文件main.dart 自动生成的项目入口文件 test 测试相关的文件 pubspec.ymal 项目依赖配置文件 3 归档图片资源和处理不同的分辨率…

python简史_命令行简史

python简史by Gitter通过吉特 命令行简史 (A Brief History of the Command Line) This post by Andy Trevorah, Engineer at Gitter, has been adapted from a talk that he originally gave at codebar, a non-profit initiative that facilitates the growth of a diverse …

4- flutter - Widget

Widget Flutter 中的view 就是widget 1 无状态和有状态的Widget StateslessWidgets 适用于用户界面不依赖于用户的信息的时候 StatesfulWidgets 有状态的&#xff0c;例如HTTP 网络请求或者用户交互之后收到数据动态表更新UI 这就是一个无状态的Widget Text("we like…

第一讲SQL命令的DDL和DML操作讲解

知识点&#xff1a; 一、sql命令DDL(结构化操作) 二、sql命令DML操作(增删改查) 1.sql命令DDL&#xff08;结构化操作&#xff09; 1.1表添加字段&#xff1a; alter table 表名 add 列定义 如&#xff1a; alter table Student add email varchar(128); 1.2 修改字段&#xff…

基于Tkinter利用python实现颜色空间转换程序

主要基于colorsys实现&#xff0c;例子是从hls转换到rgb&#xff0c;假设要换颜色空间非常easy仅仅须要改动一个函数 用到了Scale和Canvas组件 代码例如以下&#xff1a; from Tkinter import * import colorsys #操作后的响应函数 def update(* args):colorr,g,b colorsys.hl…

react 时刻表插件_React“啊哈”的时刻

react 时刻表插件As a teacher, one of my main goals is to maximize people’s “aha” moments.作为一名老师&#xff0c;我的主要目标之一是最大限度地利用人们的“哈哈”时刻。 An “aha” moment is a moment of sudden insight or clarity, where the subject starts t…

同样在JavaScript中

ES6有三个内置决定一些设施x和一些y是“相同的”。 它们是:平等或“双等于”(),严格平等或平等“三重”(),Object.is。 (注意,Object.is在ES6补充道。 等于两倍和三倍等于存在ES6之前,和他们的行为没有改变。) 概述 演示,下面是三个同样使用的比较: x y x y Object。是(x,…

5-flutter 布局和列表

布局和列表 类型作用特点Container只有一个子 Widget。默认充满&#xff0c;包含了padding、margin、color、宽高、decoration 等配置。Padding只有一个子 Widget。只用于设置Padding&#xff0c;常用于嵌套child&#xff0c;给child设置padding。Center只有一个子 Widget。只…

shell awk实战

一、文本处理 1、按行提取关键字频次&#xff08;如取第5列&#xff09; awk BEGIN{FS"|"} {a[$5]1;} END {for(i in a) print i ":" a[i];} OPT.ForumLogicNewServer_action_20161107.log | sort -nrk 2 -t : 2、日志用户每分钟访问量统计 这里我们统计日…

pix怎么抚养另一只猫_在工作和抚养两个孩子的同时,我如何在一年内获得第二学位并获得了5个开发人员认证...

pix怎么抚养另一只猫“The standard pace is for chumps. The system is designed so anyone can keep up. If you’re more driven than ‘just anyone’ — you can do so much more than anyone expects. And this applies to ALL of life — not just school.” — Derek S…

Wireshark网络抓包(三)——网络协议

一、ARP协议 ARP&#xff08;Address Resolution Protocol&#xff09;地址解析协议&#xff0c;将IP地址解析成MAC地址。 IP地址在OSI模型第三层&#xff0c;MAC地址在OSI第二层&#xff0c;彼此不直接通信&#xff1b; 在通过以太网发生IP数据包时&#xff0c;先封装第三层&a…

实现Java中的ArrayList

最近深受轮子哥影响&#xff0c;觉得造一些轮子应该会对自己的技术功底有一定的帮助&#xff0c;就决定先从简单的容器开始实现。废话不多说&#xff0c;就先实现一个Java中的ArrayList。 ArrayList是我们在Java中使用非常多的一个类&#xff0c;它是顺序表的数组实现&#xff…

6-flutter 状态管理

1 StatelessWidget 不需要状态改变的widget,它没有要管理的内部状态。 Text&#xff0c;CircleAvator 都是其子类 其传递的参数别final 修饰&#xff0c;不可变的 无状态的widget build 方法在以下三种情况下进行调用 当widget 插入到数中去当widget 父级更改配置的时候当…

大二上学数据结构和操作系统_毕业后的工作比上学要重要得多。 这是数据。...

大二上学数据结构和操作系统by Aline Lerner通过艾琳勒纳(Aline Lerner) 毕业后的工作比上学要重要得多。 这是数据。 (What you do after you graduate matters way more than where you went to school. Here’s the data.) The first blog post I published that got any r…

关于C#中编译器保证变量必须初始化规则猜想

现在两种情况&#xff1a; 第一种情况&#xff1a; using System; namespace Wrox {public class Program{static void Main(string[] args){int index; if(true){ index 100; } Console.WriteLine(index); Cons…