2015年7月4日星期六

2天驾驭DIV+CSS (基础篇)(转) - jinhuazhe2013

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
2天驾驭DIV+CSS (基础篇)(转) - jinhuazhe2013  阅读原文»

这是去年看到的一片文章,感觉在我的学习中,有不少的影响。于是把它分享给想很快了解css的兄弟们。

基础篇
[知识一] “DIV+CSS” 的叫法是不准确的
[知识二] “DIV+CSS” 将你引入两大误区
[知识三] 什么是W3C标准?
[基础一] CSS如何控制页面
[基础二] CSS选择器
[基础三] CSS选择器命名及常用命名
[基础四] 盒子模型
[基础五] 块状元素和内联元素

实战篇
[第一课] 实战小热身
[第二课] 浮动
[第三课] 清除浮动
[第四课] 导航条(上) | 导航条(下)
[大练习] 前四节课大练习
[第五课] 浮动布局之结构设计 | 浮动布局之表现设计
[第六课] 定位
[第七课] 定位应用
[第八课] CSS Hack

技巧篇
[单张图片按钮实例]
[首行文字两文字缩进]

DIV+CSS的叫法是不准确的



在整个教程的最前面必须先给大家纠正一个错误,就是“DIV+CSS”!
“DIV+CSS”这种叫法其实是一种不准确的叫法,是国人给这种布局标准页面的方法起的名字,是对技术理解不够透彻导致的,而标准的叫法是什么呢?呵呵,没错,是xHTML+CSS!,为什么会叫xHTML+CSS等你学完后面的“知识二”和“知识三”后就明白了,现在讲一下下面这个问题:


为什么国人将这种布局标准页面的方法叫做DIV+CSS?

因为第一个将这种技术引进中国的人,对这门技术理解不够透彻,单纯从代码上辨别过去的页面布局方法和现在流行的页面布局方法,认为过去布局页面用的是Table,称之为“Table+CSS”,而现在布局页面呢,用DIV,所以叫DIV+CSS。

听起来也挺合理,岂不知这种叫法误导了绝大部分的网页开发者,认为这样布局出来的页面也就是标准页面,就是符合W3C标准的页面,更甚者走了极端,看到网站上用到Table,就会嘲笑页面做的不够标准,结果用不用Table成为了判定页面是否标准的关键点。还有另外一种极端,将页面中用到的标签全部换做DIV,那就更是大错特错了。

【基础二】 DIV+CSS将你引入误区




“DIV+CSS”叫法将网页制作者引入两大误区

【误区一】网页中用了Table,页面就不标准,甚至觉着用Table丢人,Table成为了判定页面是否标准的关键点。

【误区一】认为网页中的DIV标签用的越多越好,甚至有人将页面中所有的标签都替换为DIV,DIV的多少,决定页面标准的程度。

为了能够避免大家进入误区,必须要了解“Table”和“DIV”这两个网页元素诞生的目的,首先Table诞生的目的是为了存储数据,而DIV诞生的目的就是为了架设页面结构,两者有不同的工作职能,当我们存储数据的时候用Table是最方便快捷的,比如W3Cfun.com的一个主题页面“浏览器大全”,
地址是:http://www.w3cfuns.com/portal.php?mod=topic&topicid=6

这个时候肯定用Table最合适了,而表格外面组成页面结构的部分当然用DIV了,这是由他们两个诞生的目的决定的,也是符合W3C标准的, 那么这个页面就是标准页面。

既然是标准页面,标签各干各的活“各司其职”,Table就用来存储数据,怎么用Table就丢人了呢?怎么就不标准了呢?DIV就用来构架页面结构,怎么会用的越多越标准呢?归根结底就是“DIV+CSS”的叫法导致。

【基础三】什么是W3C?




我们平时说的W3C,其实是World Wide Web Consortium的缩写,中文是W3C组织或者万维网联盟,W3C这个组织做什么的呢?很简单,就是出网页标准的。那么有W3C组织出的标准就被称为W3C标准,那么符合W3C标准的页面就是标准页面了,好,问题来了~

什么是W3C标准?

【注意】下面对W3C标准的解释,需要理解一下,因为在很多Web前端开发工程师面试的时候会遇到这方面的问题,很多企业在面试一些Web前端技术人员的时候,认为如果连什么是W3C都不知道,那做出来的页面肯定就不能够符合W3C标准,所以要求大家留意下!

W3C标准不是一个标准,而是一系列标准的集合,包含三部分的标准:结构标准、表现标准和动作标准。与结构标准对应的代表语言是xHTML,与表现标准对应的代表语言是CSS,与动作标准对应的代表语言是JavaScript。

当我们将一个成品的网页设计制作成一个静态页面的时候,就要符合前面两种标准,结构标准和表现标准,那么制作出来的页面就是标准页面,用他们相对应的语言来描述这种制作标准页面的技术我们就称之为“xHTML+CSS”!

【总结】知识一、知识二、知识三是大家必须知道的,知道了这些无论去面试还是和其他人沟通,都会让对方感觉你这个人很专业,对技术理解很透彻!

“你必须知道的知识”讲完了,后面我们就要讲“你必须掌握的基础”,内容不多,但是一定要细看,理解透彻了,这样对后面的“实战篇”才能够起到很好的促进作用,加油!同学们!

【基础一】CSS如何控制页面


本节主要讲解,两个内容:
第一:CSS如何控制页面样式,有几种样式;
第二:这些样式出现在同一个页面时的优先级。

使用xHTML+CSS布局页面,其中有个很重要的特点就是结构与表现相分离,结构指xHTML页面代码,表现就是CSS代码了,如果把一个网页看成穿着衣服的人的话,人就是xHTML,是结构,而衣服呢就是CSS,是表现,现在出现的问题是,如何让CSS去控制页面?或者说,如何让衣服穿在人身上;不同的CSS就可以使页面出现不同的风格适用不同的网站,而不同的衣服,人穿上后就会体现出不同的职业。

第一:如何让CSS去控制HTML页面?
有4种样式(方式),行内样式、内嵌样式、链接样式、导入样式


1)行内样式
行内样式是4种样式中最直接最简单的一种,直接对HTML标签使用style="",例如:

<p style="color:#F00; background:#CCC; font-size:12px;"></p>

虽然这种方法比较直接,在制作页面的时候需要为很多的标签设置style属性,所以会导致HTML页面不够纯净,文件体积过大,不利于搜索蜘蛛爬行,从而导致后期维护成本高。


2)内嵌样式
内嵌样式就是将CSS代码写在<head></head>之间,并且用<style></style>进行声明,例如:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>W3CFuns.com:打造中国Web前端开发人员最专业的贴心社区!</title>
    <style type="text/css">
    body,div,a,img,p
    {margin:0; padding:0;}
    a
    {color:#FFF;}
    img
    {float:left;第五篇:白话tornado源码之褪去模板的外衣 - 武沛齐  阅读原文»

    上一篇《白话tornado源码之请求来了》介绍了客户端请求在tornado框架中的生命周期,其本质就是利用epoll和socket来获取并处理请求。在上一篇的内容中,我们只是给客户端返回了简单的字符串,如:“Hello World”,而在实际开发中,需要使用html文件的内容作为模板,然后将被处理后的数据(计算或数据库中的数据)嵌套在模板中,然后将嵌套了数据的html文件的内容返回给请求者客户端,本篇就来详细的剖析模板处理的整个过程。

    概述

    上图是返回给用户一个html文件的整个流程,较之前的Demo多了绿色流线的步骤,其实就是把【self.write('hello world')】变成了【self.render('main.html')】,对于所有的绿色流线只做了五件事:

    • 使用内置的open函数读取Html文件中的内容
    • 根据模板语言的标签分割Html文件的内容,例如:{{}} 或 {%%}
    • 将分割后的部分数据块格式化成特殊的字符串(表达式)
    • 通过python的内置函数执行字符串表达式,即:将html文件的内容和嵌套的数据整合
    • 将数据返回给请求客户端

    所以,如果要返回给客户端对于一个html文件来说,根据上述的5个阶段其内容的变化过程应该是这样:

    class MainHandler(tornado.web.RequestHandler):
    def get(self):
    self.render(
    "main.html",**{'data':['11','22','33'],'title':'main'})

    [main.html]
    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <h1>{{title}}</h1>

    {
    % for item in data %}
    <h3>{{item}}</h3>
    {
    % end %}
    </body>
    </html>
    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>
    <h1>{{title}}</h1>

    {
    % for item in data %}
    <h3>{{item}}</h3>
    {
    % end %}
    </body>
    </html>
    第1块:'<!DOCTYPE html><html><head lang="en"><meta charset="UTF-8"><title></title></head><h1>'
    第2块:
    'title'
    第3块:
    '</h1> \n\n'
    第4块:
    'for item in data'
    第4.1块:
    '\n <h3>'
    第4.2块:
    'item'
    第4.3块:
    '</h3> \n'
    第五块:
    '</body>'
    'def _execute():
    _buffer = []
    _buffer.append(\\
    '<!DOCTYPE html>\\n<html>\\n<head lang="en">\\n<meta charset="UTF-8">\\n<title></title>\\n</head>\\n<body>\\n<h1>\\')
    _tmp
    = title
    if isinstance(_tmp, str): _buffer.append(_tmp)
    elif isinstance(_tmp, unicode): _buffer.append(_tmp.encode(\\'utf-8\\'))
    else: _buffer.append(str(_tmp))
    _buffer.append(\\
    '</h1>\\n\\')
    for item in data:
    _buffer.append(\\
    '\\n<h3>\\')
    _tmp
    = item
    if isinstance(_tmp, str): _buffer.append(_tmp)
    elif isinstance(_tmp, unicode): _buffer.append(_tmp.encode(\\'utf-8\\'))
    else: _buffer.append(str(_tmp))
    _buffer.append(\\
    '</h3>\\n\\')
    _buffer.append(\\
    '\\n</body>\\n</html>\\')
    return \\'\\'.join(_buffer)
    '
    a、参照本篇博文的前戏 http://www.cnblogs.com/wupeiqi/p/4592637.html
    b、全局变量有 title =
    'main';data = [阅读更多内容

    没有评论:

    发表评论