css&html的坑

css盒模型

在CSS中,使用标准盒模型描述这些矩形盒子中的每一个。这个模型描述了元素所占空间的内容。每个盒子有四个边:外边距边, 边框边, 内填充边 与 内容边。

content-box

默认值,标准盒子模型。 width
height
只包括内容的宽和高, 不包括边框(border),内边距(padding),外边距(margin)。

border-box(ie盒模型)

width
height
属性包括内容,内边距和边框,但不包括外边距。这是当文档处于 Quirks模式 时Internet Explorer使用的盒模型

background-box

元素的background范围覆盖了content, padding和border,但不包括margin.


外边距合并(外边距塌陷)

发生margin合并的三种基本情况:

  • 相邻的兄弟姐妹元素

  • 块级父元素与其第一个/最后一个子元素
    如果块级父元素中,不存在上边框
    上内边距
    、内联元素、清除浮动
    这四条属性(也可以说,当上边框宽度及上内边距距离为0时),那么这个块级元素和其第一个子元素的上边距就可以说”挨到了一起“。此时这个块级父元素和其第一个子元素就会发生上外边距合并现象,换句话说,此时这个父元素对外展现出来的外边距将直接变成这个父元素和其第一个子元素的margin-top的较大者。

  • 空块元素(仅设置margin元素)

解决方法

  • 在父层div加上:overflow:hidden;
  • 把margin-top外边距改成padding-top内边距;

关于让一个未知宽高的img在一个div中居中的问题

这是兼容ie8的解决方法

<!-- HTML结构 -->
<div>![](...)<span>here are test words</span></div>
<!-- 样式如下 -->
<style>
  img {
    vertical-align: middle;
  }
  div:before {
    content: "";
    display: inline-block;
    width: 0;
    height: 100%;
    vertical-align: middle;
  }
  span {
    vertical-align: middle;
  }
</style>
  • display:inline-block
    将图片既具有block的宽度高度特性又具有inline的同行特性。
    这里的img与一个height:100% 的span同行,使这一行的行高撑满div。

  • vertical-align: middle;
    让行内元素垂直居中。

  • text-align: center;
    页面内居中对齐,因为水平上有宽度的只有图片,所以图片水平也居中了。

  • 关于为什么〈span〉也要加vertical-align:
    因为你如果不给span设置属性,css会给span一个默认属性:vertical-align:baseline;也就是span底部对齐父元素的基线(baseline),你在span里打个字就看出来了,基线被自动画在div的底部的话,<img>就跟着依据这条基线为轴垂直居中了。

如果不用兼容呢
  • 方法一:绝对定位
  #container{
      position:relative;
  }
  
  #center{
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
 }
  • 方法二:flex布局
 #container{
     display:flex;
     // display: -webkit-flex; Safari需要使用特定的浏览器前缀
     justify-content:center;
     align-items: center;
 }

 #center{
 }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,796评论 1 92
  • 本文主要是起笔记的作用,内容来自慕课网. 认识CSS样式 CSS全称为“层叠样式表 (Cascading Styl...
    0o冻僵的企鹅o0阅读 2,662评论 0 30
  • CSS格式化排版 1、字体 我们可以使用css样式为网页中的文字设置字体、字号、颜色等样式属性。下面我们来看一个例...
    张文靖同学阅读 1,305评论 0 3
  • 1.块级元素和行内元素 块级(block-level)元素;行内(内联、inline-level)元素。 块元素的...
    饥人谷_小侯阅读 2,042评论 1 4
  • 本课来自http://www.imooc.com/learn/9请不要用作商业用途。 HTML5 HTML介绍 H...
    PYLON阅读 3,316评论 0 5