css使用float属性后被覆盖:原因详解及解决方法;(内附css浮动float详解)

css使用float属性后被覆盖(点击按钮没反应,也不报错)

在这里插入图片描述
如上图所示,点击中间的“批量移除”按钮没有反应,打开控制看可看到它的样式被下面的列表覆盖了
排查原因发现: 按钮的初始位置为靠左,使用了style="float: right;"使其靠右显示。

1. css使用float属性后被覆盖的原因:

div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流。
在这里插入图片描述
浮动可以理解为让某个div元素脱离标准流,漂浮在标准流之上,和标准流不是一个层次。
如果我们把div2采用右浮动,会是如下效果:
在这里插入图片描述
假如某个div元素A是浮动的,如果A元素上一个元素也是浮动的,那么A元素会跟随在上一个元素的后边(如果一行放不下这两个元素,那么A元素会被挤到下一行);如果A元素上一个元素是标准流中的元素,那么A的相对垂直位置不会改变,也就是说A的顶部总是和上一个元素的底部对齐。
div的顺序是HTML代码中div的顺序决定的。
靠近页面边缘的一端是前,远离页面边缘的一端是后。

假如我们把div2、div3、div4都设置成左浮动,效果如下:
在这里插入图片描述
假如把div2、div3、div4都设置成右浮动,效果如下:
在这里插入图片描述
总结:元素浮动之前,也就是在标准流中,是竖向排列的,而浮动之后可以理解为横向排列。
更详细的解说参考经验分享:CSS浮动(float,clear)通俗讲解

2. 解决方法

清除浮动可以理解为打破横向排列。
清除浮动的关键字是clear,官方定义如下:
语法:

   clear : none | left | right | both

   取值:

   none  :  默认值。允许两边都可以有浮动对象

   left   :  不允许左边有浮动对象

   right  :  不允许右边有浮动对象

   both  :  不允许有浮动对象

对于CSS的清除浮动(clear),一定要牢记:这个规则只能影响使用清除的元素本身,不能影响其他元素。

方法一:

<template>
   <el-button style="float: right; margin-top: 10px;" size="small" type="primary" @click="removeData">批量移除</el-button>
   <div style="clear:both"></div>
</template>

根据上述解说可知,按钮的样式必须浮动到右边,所以不能直接在按钮的样式上使用clear属性,但是要想打破横向排列,就需要让它占满一行,故可在其下面定义一个空的div样式,并定义style="clear:both",强行把其下面的元素挤下去。

方法二:

<el-button style="float: right; margin-top: 10px;" size="small" type="primary" @click="removeData">批量移除</el-button>
<a-table :columns="basicsData.columns" :data-source="dataSource" :row-selection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange,columnTitle:' ' }"
         :pagination="pagination" :row-key="(record) => getTableId(record)" :row-class-name="rowClassName"
         @change="changePagination" class="mon-table-content" style="clear:both">
</a-table>

还可以将style="clear:both"直接使用在其下面的table组件上,也可以使用style="clear:right"属性。

3. 结果

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值