HTML+CSS Grid学习

写前端页面,我开始的学习方法是记标签,但后来发现碰到需求,还是两手一摊,毫无思路。个人认为前端还是很像组合,复杂的组合是由次复杂的组合组成,而次复杂的是由更简单的单元构成。所以与其记标签,还不如记这些单元(所以自己起个名叫Grid学习,就像图像里的小格子,如下图):

网格图

1 初始化布局设置

1.1 删除默认的边框布局

这个基本是从0开始写css的第一步,将padding和margin设置为0:
*{ margin: 0; padding: 0 }

1.2 图片的边框设置

一些老IE版本,图片边框默认有黑线,一般设置边框为none,来去掉:
img{border: none}

1.3 设置全文的字体

body属性设置字体大小和行高,以及使用字体,注意字体可以多写几种,比如微软雅黑、宋体(特别是有中文的时候,有的系统没有的话,如果后面有其他字体,至少文章内容可以显示),以下是一种通用设置:
body{ font: 14px/24px 'Microsoft YaHei'; }

1.4 整体内容居中

一般页面不是完全平铺整个浏览器的,而是两边有一定边距,内容居中,写法如下。宽度可以选择960或者1160px:
.container{ width:960px[/1160px]; margin: 0 auto; }

1.5 浮动

通常像一些布局,比如向左或者向右,这时候要设置对应的对齐方式。但注意的是如果设置浮动的元素后面跟着非浮动元素,可能会导致排列问题,可以在浮动和非浮动元素之间使用clear:both。以下依次为靠左、靠右和清除属性:
.left{float: left} .right{float: right} .cl{clear: both}

2 组件

2.1 导航条

我们常看到页面头部hearer(经常尾部footer)有一条有颜色的导航条,


oschina效果图

这个实现如下:
.nav{ width: 100%; height: 64px; background-color:yourcolor ; position: fixed; top: 0px; left: 0px }
几点说明:

  • width是100%,平铺于整个宽度,当然里面的内容可以使用.container,就像oschina那样的效果。
  • position设置为fixed,这是一种常用的方式这样页面往下拖的时候,导航条并不会跟着下来。
  • 如果想里面的内容居中,则在.nav的div中,增加一级div,class为container.

2.2 一行内容有居左,居右

经常内容(特别是导航栏),有内容靠左,有内容居右,那怎么实现呢?答案是使用两个div,一个使用上面通用定义的left class,一个使用right class。这样两块内容就能分别向左、向右分开。

整理2.1和2.2,完整一个导航条实例:
<div > <div class="container"> <div class="left"> ... </div> <div class="right"> ... </div> </div> </div>

2.3 内容间距

有时每个单元间有一定的间距,比如横向排列时,后一个要里前一个有一定距离,这个时候一种方式是使用span,设置span的右外边距,那么后一个自动会距离前一个一段距离(注意最后一个也同样会距离右侧一段距离,通常我们需要定义一个新的class去去掉边距,使之靠右):
xxx span{ margin-right: 15px; }

接下来总结下,导航下面的内容(此部分有时候和导航上下顺序颠倒下,没有关系,只是在写html的顺序换一换就可以了),如qq的示例:

QQ

分析内容,可以分为:

  • 左侧是一个图标,通常是网站的图标,点击会通常到达首页;
  • 中间是一个搜索框;
  • 右侧是一些信息(略)

2.4 图标链接

分析下,它首先是一个链接,不然点击不会跳转页面;其次链接显示的是一个图像。但要放下整个图像,需要考虑头像的高度、宽度,这样像截图的这一部分才能放下;最后一点,这个图标一般偏左。分析完,代码如下:

  • HTML
<div class="logo left">
                <h1><a href="index.html"><img src="images/logo.jpg" alt="logo"></a></h1>
</div>

说明:h1标签可加,也可以不加
*CSS

.header_middle{
    height: [考虑图片的高度设定高度];
    margin: 15px 0;
}

2.5 搜索框

这部分我学习到,它并不是一个简单的form(当然form也可以),而是结合了一些图片,比如截图部分,包括左边的边框,中间内容和右边有搜索的部分,这一部分涉及HTML的form中的table使用,以及css的background: url() :
代码:
html:

<div class="searchbar right">
    <form action="index.html" method="GET">
        <table cellpadding="0" cellspacing="0" border="0">
            <tr>
                <td class="s_l left"></td>
                <td class="s_c left">
                    <input type="text" name="text" id="s_c_text">
                </td>
                <td class="s_r left">
                    <button type="submit" name="submit"></button>
                </td>
            </tr>
        </table>
    </form>
</div>

说明:

  • 设置table的cell*属性,是取消当加载图片的时候,三个图片之间的间隔;
  • 中间部分是一个input输入框,而搜索是一个submit类型的button
    css:
.s_l{
    width:6px;
    background: url("../images/s_z.jpg") no-repeat;
}
.s_c{
    width:240px;
    background: url("../images/s_c.jpg") repeat-x;
}
.s_r{
    width:78px;
    background: url("../images/s_r.jpg") no-repeat;
}

说明:url后面表示图片的放置方式,no-repeat表示只显示图片本身,repeat-x表示横向平铺,此外repeat-y表示纵向平铺;width宽度可以按照调试的结果设置大小

2.6 内容块

在新闻类页面中,经常见到一块一块的内容区,比如:

内容块

它左边一个标题或者图片,右边有More,或者是提供更多内容、其他内容,底下是一条横线。
开始我想的比较复杂,左边是一个图片,右侧是一个more,margin靠右下角,然后下面是一条br标签,学习到的写法是这个当成一个div块,底下的边框border是存在,就可以代替br标签了:
html:

<div class="description left">
    <div class="title">
        <img src="images/jianjie.jpg" alt="">
        <span><a href="">More</a></span>
    </div>
    <div class="des_content">
        <img src="images/jianjie_img.jpg" alt="">
            <p>...</p>
            <p>...</p>
            <p>... </p>
        </div>
    </div>
</div>

css

.description{
    width: 540px;
    height: 360px;
    margin-right: 20px;
}

.title{
    padding-bottom: 8px;
    border-bottom: 1px solid darkred;
    position: relative;
    margin-bottom: 10px
}

.title span{
    position: absolute;
    right: 0;
    bottom: 0;
}
.title a{
    color: darkred;
    text-decoration: none;
}
.des_content img{
    float:left;
    margin: 0 10px;
}
.des_content p{
    color: #616161;
    text-indent: 24px
}

2.7 内容块列表

有时内容块的内容像list那样列出,但第一个列表没有列表开始的点:

内容块列表

这部分包括重点两部分:
1)除第一个外,每一个有一个点图标和标题、时间组成。这部分li点的图片使用backgroud:url实现, center left是垂直居中,水平靠左
2)第一个显示的是具体内容的图标:去掉点的图标,background就需要设置为none。
代码:
html

<div class="news_content">
    <ul>
        <li class="a">
            <a href="">
                <img src="images/list_img.jpg">
                <h3>Web前端开发之HTML+CSS基础入门</h3>
                <p> ... ...</p>
            </a>
        </li>
        <li>
            <a href="">
                <h3>HTML5+CSS快速入门</h3>
                <span>2016-7-16</span>
            </a>
        </li>
        <li>
            <a href="">
                <h3>HTML5+CSS快速入门</h3>
                <span>2016-7-16</span>
            </a>
        </li>   
    </ul>
</div>

css:

.news_content {

}

.news_content li{
    list-style: none;
    height: 24px;
    line-height: 24px;
    position: relative;
    padding-left: 15px;
    margin-bottom: 6px;
    background: url("../images/list_bg.jpg") no-repeat center left;

}

.news_content li.a{
    background: none;
    padding: 0;
    height: 76px
}

.news_content li.a img{
    float: left;
    margin: 0 10px 10px 0
}

.news_content p{
    font-size: 12px;
    color: #888;
    text-indent: 24px
}

.news_content h3{
    list-style: none;
    height: 24px;
    line-height: 24px;
    font-weight: normal;
    font-size: 14px
}

.news_content a{
    color: #616161;
    text-decoration: none
}

.news_content span{
    position: absolute;
    right: 0;
    bottom: 0;
    color: #888;
    font-size: 12px
}

[未完待续...]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,727评论 1 92
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 1,730评论 0 2
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,303评论 0 11
  • 转载请声明 原文链接地址 关注公众号获取更多资讯 第一部分 HTML 第一章 职业规划和前景 职业方向规划定位...
    程序员poetry阅读 16,511评论 32 459
  • 最近的新闻负能量很多,榆林产妇要求剖腹被家属拒绝选择跳楼自杀;广东一产妇买菜路上分娩;辽宁38岁妇女独自在家带娃,...
    纸匠情挑阅读 340评论 6 6