先看图:
文件结构大致如下:图片位于义项1内,义项1.1等为义项1同级元素。按钮(假定为btn)为js创建的。
需要达成的目标:
- 按钮呈现右浮动状态,但不会侵入下一义项(标号2处);
- 图片呈现右浮动状态,且多条释义之间不会出现空白。
仅达成目标1很简单,只需要在按钮后面加一个清除浮动的元素(假定为clearfix)即可。可以用js创建,并且设定样式为{display:block; clear:both; height:0}
但如此设定,义项1.1会出现在图片之下而非图片左侧——这是由于义项1中的按钮清除浮动,会导致清除浮动的块状元素clearfix位于图片下方。
我整了个邪招:
步骤1:在按钮之前插入一个元素(假定为btn_room),通过js设定其宽、高等于按钮的宽、高,设定display为inline-block,从而占位——如果浮动按钮换行,则btn_room也会换行;
步骤2:如果btn_room距离window左边界大于其所在义项div距离window左边界,说明按钮btn没有换行,此时设定btn_room的display为none;
步骤3:监听window的resize事件,一旦发生窗口大小变化,则设定btn_room为inline-display属性、并重复步骤2。
以上情况只有在极端条件——btn所在义项的宽度小于btn宽度的2倍,才会出现btn前有空行的情况。
话说,大神们可有更好的办法?