display:inline问题_display: 'inline' 把宽度搞没了-程序员宅基地

技术标签: css页面布局问题  

三:inline-block布局:一种更优的布局技术


1)inline-block布局:一种全新的web页面布局解决方式,其既能够充分发挥div+css浮动布局的长处。又可克服浮动盒子所带来的缺点

  • 什么是inline模式的盒子:一个盒子在一行内连续排列出来,后一个紧跟着前一个在一行中。直到碰到行尾后再自然换到下一行继续如此显示。

    行内盒子不能设置宽度和高度,也没有上下margin和padding(但左右margin和padding存在)。

    常见行内元素:span,a。img,b。i,u

  • 什么是block模式的盒子:一个盒子自身就占领其所在父盒子中的一整行,而无论其本身的宽度多少,也不会“折行”。常见块元素:div。hr,p,ul/li。ol/li。dl/dt/dd。h1-h6。pre,form

2)那么inline-block的表现又是什么呢?

  • 盒子跟外界(其兄弟元素)表现为内联(inline)模式,即能够跟其兄弟元素自然并排放置(类似img标签) ,但盒子作为总体,又表现为块模式,即该盒子本身不能“自己主动换行显示”能够设定宽高
  • 实际上,从总体表现上来说。inline-block盒子的表现很类似“img”元素,即多个img能够在一行中出现。但一个img本身是不会“中间折行”的(对照:span和a标签碰到了行尾都会自己主动折行)。仅仅只是img作为图片显示元素。其“内部”不能放其它内容了,而inline-block盒子却是我们最常规的可随意放置其它内容的一个“容器”。

3)各种布局本质上解决什么问题?

所谓布局。无非事实上就是解决元素放置到页面上的排布方式。从“平面区块”的角度来说,无论用哪种布局方式。无非就是解决2个问题:
  • 元素怎么从上到下排列出来:

块元素(如div)自然上下,br元素明白换到下一行。tr元素表示表格的行。可见上下排列关系中。无需额外css技术。

  • 元素怎么从左到右排列出来:

  1. 行内元素自然从左到右
  2. table中的td
  3. 盒子的浮动
  4. inline-block!

  • 布局原理:层层 划分“当前区域”

  • 划分方法有两个:

  1. 上下划分
  2. 左右划分



inline-block布局的特点和做法很easy:

  • 依据我们前面的inline-block的表现的介绍,和布局的本质思想,我们实现inline-block模式的布局很easy:
  1. 实现横向排列,这是inline-block盒子的自然表现(就如图片自然横向排列一样。这也是“行内块”盒子所体现的“inline”的地方。我们所要做的无非就是设定合适的宽度。

  2. 实现纵向排列:跟inline-block无关,也跟float无关,而是直接利用我们前面说的div和br,轻松搞定!


四:inline-block布局要解决的问题(实现兼容性的做法)


  • 我们非常快发现,假设页面不考虑象素级的精确设计,使用inline-block技术进行布局非常easy理解和easy实现。差点儿跟我们在地面上贴瓷砖一样。但我们也发现,被inline-block化之后的盒子。盒子跟盒子之间有几个像素的间隙。就像图片自然并排放置一起时的样子,这显然对现代像素级的设计需求来说是不够的!

    那怎么解决:

  1. 首先,间隙是什么?——空格!
  2. 其次,怎么去除间隙?——父盒子设置font-size:0px;
  3. 最后,没有最后了。这就差点儿好了——对现代浏览器来说

  • 这里将block元素转为inline-block元素有两个easy解决的兼容性问题:

  1. 将块盒子转换为行内块盒子:xxx{display:inline-block;}

xxx { *display:inline;}/*再写回“inline”模式。这是对IE6/IE7兼容,仅仅有这样IE6/7才表现为行内块盒子*/

  1. font-size:0不能消除苹果浏览器safari的盒子间隙,需再设置letter-spacing为负值,比方:letter-spacing:-4px

此负值在font-size为0的情况下,对其它浏览器无影响。

此负值大小受字体名称和字体大小影响,需依据场合略调整。比方常见的12px的Arial字体是-4px,12px的宋体是-8px

  • 将inline元素转为inline-block元素也行,但兼容性更差些,不推荐



五:inline-block布局应用(案例演示)


最后的总结代码例如以下:

/*应用到inline-block布局的外面盒子*/
.out{
font-size:0px;/*inline-block布局的核心代码1*/
letter-spacing:-8px;/*兼容代码1:兼容苹果浏览器。负值对其它浏览器无效*/
text-align:center;/*inline-block布局的辅助代码1,能够left。center。right*/
}
/*应用到inline-block布局的里面盒子*/
.in{
display:inline-block;/*inline-block布局的核心代码2*/
vertical-align:top;/*inline-block布局的辅助代码2。能够top, middle, bottom*/
}
.in{
*display:inline;/*兼容代码2:兼容 IE6/7*/
}

參考资料:

传智播客罗弟华老师研究 inline-block布局技术 视频下载

链接:http://pan.baidu.com/s/1sjrqYfj 提取password:gh3r

CSS float浮动的深入研究、具体解释及拓展(一)
http://www.zhangxinxu.com/wordpress/?

p=583
CSS float浮动的深入研究、具体解释及拓展(二)
http://www.zhangxinxu.com/wordpress/?p=594
拜拜了,浮动布局-基于display:inline-block的列表布局
http://www.zhangxinxu.com/wordpress/?p=1194
inline-block 前世今生
http://ued.taobao.org/blog/2012/08/inline-block/
CSS浮动布局inline-block
http://www.keakon.net/2010/11/13/CSS%E6%B5%AE%E5%8A%A8%E5%B8%83%E5%B1%80%E4%B8%8Einline-block


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/woxingx/article/details/52138084

智能推荐

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

【无标题】jetbrains idea shift f6不生效_idea shift +f6快捷键不生效-程序员宅基地

文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效

node.js学习笔记之Node中的核心模块_node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是-程序员宅基地

文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是

数学建模【SPSS 下载-安装、方差分析与回归分析的SPSS实现(软件概述、方差分析、回归分析)】_化工数学模型数据回归软件-程序员宅基地

文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件

利用hutool实现邮件发送功能_hutool发送邮件-程序员宅基地

文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件

docker安装elasticsearch,elasticsearch-head,kibana,ik分词器_docker安装kibana连接elasticsearch并且elasticsearch有密码-程序员宅基地

文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码

随便推点

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

元素三大等待-程序员宅基地

文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待

Java软件工程师职位分析_java岗位分析-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析

Java:Unreachable code的解决方法_java unreachable code-程序员宅基地

文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code

标签data-*自定义属性值和根据data属性值查找对应标签_如何根据data-*属性获取对应的标签对象-程序员宅基地

文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象

推荐文章

热门文章

相关标签