总结最近看到的关于块级元素、居中的问题

(一)行内元素与块级函数的三个区别

1.行内元素与块级元素直观上的区别

行内元素会在一条直线上排列,都是同一行的,水平方向排列

块级元素各占据一行,垂直方向排列。块级元素从新行开始结束接着一个断行。

2.块级元素可以包含行内元素和块级元素。行内元素不能包含块级元素。

3.行内元素与块级元素属性的不同,主要是盒模型属性上

行内元素设置width无效,height无效(可以设置line-height)margin上下无效,padding上下无效

 

(二)行内元素转换为块级元素(重要标签 :下面详细)

display:block (字面意思表现形式设为块级)

 

(三)分类

块级元素列

<address>

定义地址

<caption>

定义表格标题

<dd>

定义列表中定义条目

<div>

定义文档中的分区或节

<dl>

定义列表

<dt>

定义列表中的项目

<fieldset>

定义一个框架集

<form>

创建 HTML 表单

<h1>

定义最大的标题

<h2>

定义副标题

<h3>

定义标题

<h4>

定义标题

<h5>

定义标题

<h6>

定义最小的标题

<hr>

创建一条水平线

<legend>

元素为 fieldset 元素定义标题

<li>

标签定义列表项目

<noframes>

为那些不支持框架的浏览器显示文本,于 frameset 元素内部

<noscript>

定义在脚本未被执行时的替代内容

<ol>

定义有序列表

<ul>

定义无序列表

<p>

标签定义段落

<pre>

定义预格式化的文本

<table>

标签定义 HTML 表格

<tbody>

标签表格主体(正文)

<td>

表格中的标准单元格

<tfoot>

定义表格的页脚(脚注或表注)

<th>

定义表头单元格

<thead>

标签定义表格的表头

<tr>

定义表格中的行

 

行内元素列表

<a>

标签可定义锚

<abbr>

表示一个缩写形式

<acronym>

定义只取首字母缩写

<b>

字体加粗

<bdo>

可覆盖默认的文本方向

<big>

大号字体加粗

<br>

换行

<cite>

引用进行定义

<code>

定义计算机代码文本

<dfn>

定义一个定义项目

<em>

定义为强调的内容

< i>

斜体文本效果

<img>

向网页中嵌入一幅图像

<input>

输入框

<kbd>

定义键盘文本

<label>

标签为 input 元素定义标注(标记)

<q>

定义短的引用

<samp>

定义样本文本

<select>

创建单选或多选菜单

<small>

呈现小号字体效果

<span>

组合文档中的行内元素

<strong>

语气更强的强调的内容

<sub>

定义下标文本

<sup>

定义上标文本

<textarea>

多行的文本输入控件

<tt>

打字机或者等宽的文本效果

<var>

定义变量

 

可变元素素列表--可变元素为根据上下文语境决定该元素为块元素或者内联元素

<button>

按钮

<del>

定义文档中已被删除的文本

<iframe>

创建包含另外一个文档的内联框架(即行内框架)

<ins>

标签定义已经被插入文档中的文本

<map>

客户端图像映射(即热区)

<object>

object对象

<script>

客户端脚本

 

(四)居中问题

  (先说水平居中)

1,用display标签,把块元素转换为行级元素,使用text-align居中

2,margin:0 auto; 居中问题(必有宽度)

margin:0 auto;的意思就是:上下边界为0,左右根据宽度自适应!其实就是~~水平居中的意思两个典型的错误引起的不能居中的问题:
1.1、没有设置宽度
<div style="margin:0 auto;"></div>
看看上面的代码,根本没有设置DIV的宽度,如何根据宽度自适应呢?新手比较容易忽略的问题!
1.2、没声明DOCTYPE

DOCTYPE是document type(文档类型)的简写,在web设计中用来说明你用的XHTML或者HTML是什么版本。要建立符合标准的网页,DOCTYPE声明是必不可少的关键组成部分!

你有三种选择,用来声明DOCTYPE
* 过渡的(Transitional):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法),完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
* 严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如<br>,完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
* 框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD,完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

还有就是 margin:0 auto; 和 margin-left:auto; margin-right:auto;的现实效果有时间还不一样,其原意可能在于设置了margin-top的高度不为0时,会出现意想不到的效果。

 

(五)Display详解

display:inline-block与display:-moz-inline-box display:-moz-inline-stack 的区别

很多时候我们必须使一些块元素并排显示,一般想到的是必须使用浮动,但是块元素浮动给边距(margin)的时候在IE下会出现加倍的BUG,所以很多时候不得不把这个块元素套在一个内联元素里面,然后给内联元素浮动和边距。今天看到这篇文章不错 就COPY 过来 希望大家做个参考:

display:inline-block
简单来说就是将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。但是这个属性目前不是所有的浏览器都支持,只有Opera和Safari支持,FireFox3和IE8据说将会支持,Firefox2和IE使用特殊办法可以实现这种效果,下面就来探讨一下

在Firefox2中有-moz-inline-stack和-moz-inline-box实现,但是这两个私有属性在某些情况下都会有异常,具体如下:
1、display:-moz-inline-stack
“当它所应用的外包装器(wrapper)的display为inline的时候,它所包含的a或button将无法点击或无法选取,需要通过position:relative还hack掉这个bug”
2、display:-moz-inline-box
使用这一属性后,text-align就会出问题,必须使用Firefox的私有属性 -moz-box-align来解决所以,建议不要使用-moz-inline-box,还是使用-moz-inline-stack

在IE(以下IE8除外)下,如果对内联元素,比如a或span元素,使用inline-block属性是有效的,似乎IE是支持的,其实是触发了IE的layout,从而拥有了inline-block属性的表症。这样我们就有了一种在
IE下实现display:inline-block效果的两种方法:

1、先用display:inline-block属性触发块元素,然后再定义display:inline,让块元素呈递为内联对象(原理:这是IE的一个经典bug,如果先定义了display:inline-block,然后再设置display回inline或block,layout不会消失),代码如下:
div {display:inline-block;}
div {display:inline;}

2、直接让块元素设置为内联对象(display:inline),然后通过zoom:1触发块元素的layout,代码如下:
div {display:inline; zoom:1;}

那么为了能够让所有浏览器支持display:inline-block,综合一下,最终的实现代码如下(参考怿飞:模拟兼容性的 inline-block 属性):

display:inline-block; /*一方面Firefox3 beta、IE8 beta、Opera、Safari 支持,另一方面下触发IE下inline 元素的 hasLayout*/

display:-moz-inline-stack; /* Firefox 的私有属性,需要时还必须用到position:relative解决上面提到的bug */
zoom:1; /*同样是IE 下触发 hasLayout*/
*display:inline; /*一旦IE 下触发了 hasLayout,设置 block 元素为 inline 会使 display:inline
效果与 display:inline-block 相似*/

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要让块级元素水平居中,有以下几种方法: 1. 使用 `margin: 0 auto`: ```css .block { width: 200px; margin: 0 auto; } ``` 2. 使用 `text-align: center`: ```css .block { display: inline-block; text-align: center; } ``` 3. 使用 `flex` 布局: ```css .container { display: flex; justify-content: center; } ``` 4. 使用 `grid` 布局: ```css .container { display: grid; place-items: center; } ``` 5. 使用 `position` 定位: ```css .block { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } ``` ### 回答2: 要让块级元素水平居中,有几种常见的方法可以实现。 第一种方法是使用自动外边距。可以通过设置左右外边距为auto,来使得块级元素在父容器水平居中。例如,可以给块级元素设置如下的CSS样式: ```css .element { margin-left: auto; margin-right: auto; } ``` 第二种方法是使用CSS的flexbox布局。可以在父容器使用flexbox布局,然后将子元素设置为flex子项。通过设置flex容器的`justify-content`属性为`center`,可以将子元素在水平方向上居中。例如: ```css .container { display: flex; justify-content: center; } .element { /* styles for the element */ } ``` 第三种方法是使用CSS的网格布局。通过将父容器设置为网格布局,然后将子元素放置在间的网格区域,可以实现水平居中。例如: ```css .container { display: grid; justify-content: center; } .element { /* styles for the element */ } ``` 以上是常见的几种实现块级元素水平居中的方法。根据具体的布局需求和浏览器兼容性要求,可以选择适合的方法来实现。 ### 回答3: 要让块级元素水平居中,可以采用以下几种方法: 1. 使用margin属性:通过设置元素的左右外边距为auto,可以使其在父元素内水平居中。 例如:margin: 0 auto; 2. 使用text-align属性:将元素的父元素的text-align属性设置为center,可以使子元素在父元素内水平居中。 例如:父元素的样式:text-align: center; 3. 使用flex布局:将元素的父元素的display属性设置为flex,然后通过设置justify-content属性为center,可以使子元素在父元素内水平居中。 例如:父元素的样式:display: flex; justify-content: center; 4. 使用position属性结合transform属性:将元素的position属性设置为absolute,并且通过设置left和right属性为0,并设置margin-left和margin-right属性为auto,可以使元素在父元素内水平居中。 例如:position: absolute; left: 0; right: 0; margin-left: auto; margin-right: auto; 总结起来,要让块级元素水平居中,可以使用margin属性、text-align属性、flex布局或者position属性结合transform属性的一种或多种方法来实现。根据实际情况选择适合的方法即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值