CSS实现相册横向完美排布例子

很久没有研究css了,成天用各种框架也基本都不需要自己写,最近要做一个相册页面,碰到的第一个问题就是如何排布。

先给出设计稿,然后再说说样式如何写

分析一下,有一个容器,容器有padding,每一行的每一个item之间又有margin,首先想到的是这样

.container {
    padding: 10px;
}
 
.container .item {
    float: left;
    width: 24%;
    margin-left: 1%;
    border: 1px solid #CCC;
}

然而,这种情况会造成两个问题,首先第一个是第一个item自身的margin-left加上.container的padding会造成左边空白比上下左右都要大,还会造成item与item之间的垂直间距与水平间距不能控制到一样的大小。
于是考虑到使用calc属性

.container {
    padding: 5px;
}
 
.container .item {
    width: 25%;
    position: relative;
    float: left;
}
 
/* 这个图片仅仅是为了获取宽高,实际是看不见的 */
.container .item > img {
    opacity: 0;
    width: 100%;  
}
 
 
/* 这个才是每一个item里容器
.container .item .body {
    border: 1px solid #CCC;
    width: calc(100% - 10px);
    height: calc(100% - 10px);
    margin: auto;
    left: 0;
    top: 0;
    bottom: 0;
    right: 0;
}

以上代码如果要是用sass来实现的话,更容易了,这种实现方法相当于实际上每一个item占用的大小就是25%,只是里面的body都上下左右都有5px的边距。item与item之间的边距实际上就是每一个item的右间距加上右边item的左边距,每一个item的下边距加上它下方item的上边距。

这种实现方法有几个好处:

1、上下左右都是一样的边距
2、纯样式
3、图片比例不会被破坏

时间: 2024-07-31 22:27:34

CSS实现相册横向完美排布例子的相关文章

《Android UI基础教程》——2.3节排布视图

2.3 排布视图 Android UI基础教程 Android视图层次起始于一个布局容器.这些容器包含子视图并安排它们的相对位置.有几个具有不同特征的容器类型,以在不同情况下获得最优解. 2.3.1 FrameLayout 最简单的布局容器是FrameLayout.这个容器完全不安排子视图.它只是简单地呈现每一个视图,从上到下摆下来.视图的顺序是基于它们在XML文件中的声明:视图在文件的后部声明的会被画在顶部.任何时候当你想创建重叠视图时都可以使用这个布局. 当创建自定义的可点击的元素时Fram

用CSS创建导航菜单的两个例子

css|菜单|创建|导航 原创教程,转载请注明出处:网页教学网 用CSS创建导航菜单的两个例子 现在使用CSS+XHTML制作网页,通常网页需要导航,导航通常有两种:水平和垂直. 1.垂直导航的例子:(单击此处浏览演示效果) (1)CSS文件:(保存为vertical.css) h1, h2{font: normal 200%/100% Garamond, "宋体", serif;margin-bottom: 0px;color: #630;background: transparen

评论排布的正序与逆序

要讨论的问题很简单. 互联网移动产品中,「评论」这一信息,在屏幕中由上而下应该按什么顺序排布:最新消息在底层(正序),还是最新消息在顶层(逆序)? 先看看几个知名产品是怎么选择的吧. 逆序:新浪微博.简书.网易新闻(点赞亦会影响顺序).Coding 正序:百度贴吧.人人网.朋友圈.知乎.Facebook 除了这些产品以外,还有极少数使用自有算法进行优先级设置,可以通过分析来选择将更有分量.意义的评论放置在显眼的位置. 我们从三个维度来讨论一下这个问题. 首先,关于位置的重要性. 很容易明白,靠近

css样式教程:图文混排[图上文字下]

css样式教程:图文混排[图上文字下],标题不知道怎么写所以就搞得很乱,很多的,下我们先看看混文混排的效果图片你就会知道是怎么的效果了哦. 看css 布局代码.  代码如下 复制代码  <ul class="hotGroup">             <li><a href="#"></a><span>圈子名称</span></li>             <li>&

mfc-请问怎么用MFC直接出现下面的界面排布啊?

问题描述 请问怎么用MFC直接出现下面的界面排布啊? 不知道怎么在ChildFrame中写MoveWindow()和SetWindowPos()函数,请教各位大神了? 解决方案 直接用窗口视图分割.切割出三个试图,对应上面三个窗口. 解决方案二: 其实你是想知道怎么使用那两个函数?建议使用SetWindowPos.x,y是新的在父窗口里的位置.

《创造球会:射门!》多种多样的阵容排布

和"创造球会"系列其他的作品一样,玩家在游戏中要做的就是创造一只球队,选定自己的主场,并作为教练带领这支球队参加全国的足球赛事,成为全国最强.当然肯定也少不了一位年轻美丽的秘书陪伴在你的左右-- 优点 得到球员的方式别具一格多种多样的阵容排布防守崩坏系统很值得研究 缺点 3D画面略显粗糙属性相克系统太过简单粗暴 世嘉有两大足球游戏品牌,除 PC上家喻户晓的"足球经理"系列外,家用机上以扮演教练为卖点的<创造球会>系列也拥有超过400万份的总销量,成为了足

用DIV+CSS布局网页表单的一个例子

css|网页 这是一个例了,不知道有没有更好的解决办法,贴上来,随便看吧! CSS: body{font-size:12px; line-height:1.9; text-align:center;}#info{border:1px solid #006699; background:#F9EBBB; text-align:left; margin:10px auto; width:300px; padding:10px 10px 10px 110px;}#info label{ width:1

精华:用CSS布局网页表单form的例子

css|精华|网页 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type&

CSS&amp;nbsp;相册布局

css Quote 原文:CSS gallery layout-smells like a table翻译自:http://dnevnikeklektika.com/en/css-gallery-layout-en译者的话:真的没有时间一字一句的翻译,将主要部分吧效果图 结构代码<ul class="gallery"> <li><a href="#" title="Klik za veu sliku"><