【AngularJS】一次 float 和 display 的效果对比


<!DOCTYPE html>
<html lang="zh" ng-app="myApp">

<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css">
<style type="text/css">
.shop-item {
background-color: slategray;
width: 180px;
/*float: left;*/
margin: 5px;
font-size: 12px;
overflow: hidden;
border: 1px solid transparent;

display: inline-block;
vertical-align: top;
}

.tag-item {
margin-top: 5px;
margin-left: 1px;
margin-bottom: 3px;
display: inline-table;
}

</style>
</head>

<body ng-controller="ShopController as vm">
<div>店铺列表</div>
<shop-view shop-list="vm.shopList"></shop-view>
<div>统计信息:_____</div>
</body>

<script src="bower_components/angular/angular.js"></script>
<script>
angular.module("myApp",[])

.controller("ShopController",function($scope){
vm= this;

vm.shopList = [
{name:'店铺1',tagList :[{name:'短裤'},{name:'护腕'}]},
{name:'店铺2',tagList :[{name:'短裤'},{name:'上衣'},{name:'跑鞋'}]},
{name:'店铺3',tagList :[{name:'超级短裤'},{name:'超级袜子'},{name:'超级跑鞋'}]},
{name:'店铺4',tagList :[{name:'短裤'},{name:'袜子'},{name:'跑鞋'}]},
{name:'店铺5',tagList :[{name:'短裤'},{name:'袜子'},{name:'跑鞋'},{name:'护腕'},{name:'计时器'}]},
{name:'店铺6',tagList :[{name:'短裤'},{name:'袜子'},{name:'跑鞋'}]},
{name:'店铺7',tagList :[{name:'短裤'},{name:'袜子'},{name:'跑鞋'}]},
{name:'店铺8',tagList :[{name:'短裤'},{name:'袜子'},{name:'护腕'},{name:'护腕'},{name:'护腕'},{name:'护腕'}]},
{name:'店铺9',tagList :[{name:'短裤'},{name:'袜子'},{name:'护腕'},{name:'护腕'}]},
{name:'店铺10',tagList :[{name:'短裤'},{name:'袜子'},{name:'帽子'},{name:'手套'},{name:'计时器'}]},
];
})

.directive("shopView",function(){
return{
restrict : 'EA',
template :
'<div><div ng-repeat="shop in shopList" class="shop-item">'+
'<div><span>{{shop.name}}</span></div>'+
'<div ng-repeat="tag in shop.tagList" class="tag-item">'+
'<span class="label label-warning">{{tag.name}}</span>'+
'</div>'+
'</div></div>',
replace : true,
scope :{
shopList : '='
},
link:function (scope,element,attrs) {

}
}
})
</script>
</html>


display 和 vertical-align的配合,达到类似卡牌的效果,如下

[img]http://dl2.iteye.com/upload/attachment/0118/3138/66378922-1e0c-3ef8-a3e0-1fa81aba7474.png[/img]


如果改为float,效果如下:
1、注意店铺7,由于店铺5的高度> 店铺4, 故其被挂在店铺5后面了,
2、由于float 脱离的文档留,故其外层div高度为0,导致“统计信息____”的div的宽度也被拉宽(解决方案是在 div内,包含一个 <div style="clear:both;"></div> 对float的效果做清理,这样可以使父div的高度被撑开)

[img]http://dl2.iteye.com/upload/attachment/0118/3142/130ac4b6-f9fc-33e8-a06d-ba22895a7055.png[/img]


总结一下:
1 float适合有文字环绕时的效果
2 inline-block:行内块效果,适合这种图片排列且换行(比如导航条、图片卡牌),占用普通文档流,且可以用 vertical-align 这个属性设置对齐方式
### 回答1: display是CSS的一个属性,用于指定元素的显示方式,常见的取值有block、inline、inline-block、none等。 position也是CSS的一个属性,用于指定元素的定位方式,常见的取值有static、relative、absolute、fixed等。 float也是CSS的一个属性,用于指定元素的浮动方式,常见的取值有left、right、none等。浮动元素会脱离文档流,可以让其他元素环绕在其周围。 ### 回答2: display、position和float是CSS常用的布局属性。它们可以帮助我们控制HTML元素的位置和排布,实现不同的网页布局效果。 首先,display属性用来设置元素的显示方式。常用的取值有block、inline、inline-block、flex等。其,block元素会在页面独占一行,可以设置宽度、高度、内外边距等属性;inline元素则会与其它行内元素在同一行排布,只能设置水平方向的内外边距等属性;inline-block元素则是将两者结合起来,可以与其它行内元素并排排布,同时也可以设置宽度、高度、内外边距等属性。flex布局则是近年来较为流行的一种弹性盒子布局,可以实现比较灵活的布局形式。 其次,position属性用来设置元素的定位方式。常用的取值有static、relative、absolute、fixed等。其,static为默认值,元素遵循正常文档流排布;relative则是相对定位,元素会按照正常的文档流排布,但是可以通过left、top、right、bottom等属性调整相对于其原本位置的偏移量;absolute则是绝对定位,元素不再按照正常文档流排布,而是相对于其最近的已定位祖先元素(如果没有则相对于body元素)定位,可以通过left、top、right、bottom等属性调整位置;fixed则是固定定位,元素相对于屏幕视口定位,保持在屏幕上始终可见。 最后,float属性用来设置元素的浮动方式。常用的取值有left、right、none等。元素浮动后,会沿着其父元素的边框排布,如果浮动的元素是块级元素,则会从正常的文档流“脱离”,可能会影响其它元素的排布。float属性常用于实现多栏布局、图文混排等效果。需要注意的是,浮动后的元素需要清除浮动,否则可能会出现布局混乱的问题。常用的清除浮动的方式有给父元素添加clear属性、使用伪元素清除浮动等。 综上所述,display、position和float是实现CSS布局的重要属性,熟练运用它们可以实现各种复杂的网页布局效果。 ### 回答3: display、position和float这三个CSS属性是页面布局常用的属性。它们分别用于定义元素的显示方式、定位方式和浮动方式。 display属性用于定义一个元素应该怎样显示。常见的display值有block、inline和none。block表示元素将会在一个新行显示,它会占据一行的全部宽度;inline表示元素将会在一行显示,它只会占据自身的宽度;none表示元素将不会被显示出来。除了这些常见的值,还有很多其他的display值,比如inline-block、table等可以用来实现更复杂的页面布局。 position属性用于定义元素相对于其父元素的定位方式。常见的position值有static、relative、absolute和fixed。static表示元素不进行定位,默认为static;relative表示元素相对于它原来的位置进行定位;absolute表示元素在文档流脱离,它的位置相对于最近的已定位的祖先元素,如果没有已定位的祖先元素,则相对于文档的起始点;fixed表示元素在文档流脱离,它的位置相对于浏览器窗口。 float属性在页面布局很常见,它用于定义一个元素应该浮动在其父元素的左侧或右侧。当使用float属性时,这个元素会被移动到容器的左侧或右侧,其他元素会在其周围布局。因此,float属性经常用于实现页面的多列布局。值得一提的是,当使用float属性时,可能会导致元素高度塌陷的问题,这时候可以使用clear属性来解决问题。 综上所述,display、position和float是CSS非常重要的属性,它们可以用于实现各种各样的页面布局效果。熟练运用这些属性,可以让页面布局更加灵活多样,并且可以减少HTML代码的冗余部分,提高代码的可维护性和可读性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值