CSS块内元素定位的问题

问题的提出

今天又遇到了一个块内元素定位的问题,具体的问题是这个样子的,如图:

处于三个块中的三个按钮因为上方子块中的文字字数不一致而导致无法对齐

如图中红线画出的部分,经分析,这属于块内元素定位的问题。关于定位问题,就要提到position属性。

学习学习

position 可选的属性有:static;absolute;relative;fixed;

static:元素框(块级元素生成的矩形框)自带属性,正常生成的元素框再不做任何操作时所处的状态。正是因为这是元素框的自带属性,如例子中所示,他们作为文档流的一部分会自上而下的排列,所以文字部分的高度不同影响了下面button部分位置的不同
absolute:绝对定位(跟别人比),将其从文档流中脱离出来,使用left right top bottom 属性相对于其最接近的一个具有定位属性的父包含块中进行绝对定位,如果不存在这样的包含快,则相对于body元素,也就是浏览器窗口进行定位。我就是利用这个性质解决了上面的对齐问题
relative:相对定位(跟自己比),使用left right top bottom 属性,相对于static默认位置时的偏移。
fixed:固定定位(跟浏览器可视窗口比);当position属性设定为fixed并且结合left right top bottom属性时,效果就是当滑动鼠标浏览器窗口滚动时,该元素框不会随着窗口的滚动而发生位置变化。好多网页里烦人的广告应该就是用这个属性实现的

问题的解决

经过对position属性的了解,确定该问题应该将button的元素框position属性设置为absolute,让其位置相对于父级元素对齐。那么问题来了,什么叫做最近的一个具有定位属性的父包含块。所有的块在未指定position属性时都默认为是static的。所以具有定位属性的块就是非static块。

1.将父包含块元素的position属性设定为relative,但是不设定left,right,top,bottom的值。
2.将button块的position属性设定为absolute,left:150px;bottom:10px;问题就解决啦>

.marketing .col-lg-4{ //父级块元素
    margin:0 5px;
    text-align:center;
    float:left;
    width: 380px;
    height: 480px;
    position:relative;
}

.marketing .col-lg-4 .btn{ //button块元素
    position:absolute;
    bottom: 10px;
    left:150px;
}
问题解决后效果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,868评论 1 92
  • 浮动 CSS允许浮动任何元素。 浮动元素 首先,会以某种方式将浮动元素从文档的正常流中删除,不过它还是会影响布局。...
    exialym阅读 1,264评论 0 6
  • 学习CSS的最佳网站没有之一 http://www.w3school.com.cn/tags/index.asp ...
    Amyyy_阅读 1,110评论 0 1
  • CSS 定位 CSS有三种基本的定位机制:普通流,浮动,绝对定位(absolute, fixed):普通流是默认定...
    _空空阅读 5,877评论 0 15
  • 各种纯css图标 CSS3可以实现很多漂亮的图形,我收集了32种图形,在下面列出。直接用CSS3画出这些图形,要比...
    剑残阅读 9,781评论 0 8