响应式html5与css3实战 1-4章总结

第一章、响应式web设计基础

    1.什么是响应式web设计

        1)响应式web设计,就是网页内容会随着访问它的视口及设备的不同呈现不同的样式。

        视口:用于呈现网页的区域,视口的大小通常不等于屏幕大小,特别是在浏览器窗口缩放的情况下。

    2.浏览器支持

        关于IE8及以下版本几乎没有什么可利用资源,所以放弃那些"残疾"浏览器把资源主要放在支持现代浏览器和现代平台才是最明智的。

            我们也可以通过 http://caniuse.com 查询浏览器支持什么特性

    3.视口meta标签的重要意义

        <meta name="viewport" content="width=device-width">

            <meta> 标签它告诉浏览器怎么渲染网页并按照设备宽度(device-width)来渲染网页内容

    4.怎么让图片窗口缩放

        width与max-width

            1)width:如果给width设定值图片会按照该值显示,不考虑自身固有宽度。这样会导致它显示的跟它的容器一样宽,在容器比图片宽的情况下,图片会被无谓的拉伸

            2)max-width:保证所有图片最大显示为其自身的100%(即最大只可以显示为自身那么大),如果包含图片的元素比图片固有宽度小,图片会缩放占满最大可用空间。

第二章、媒体查询

    1.为什么响应式web设计需要媒体查询

            css3媒体查询可以让我们针对特定的设备能力或条件为网页应用特定的css样式。使用媒体查询,不必修改内容本身,而让网页适配不同的设备比如屏幕方向水平或垂直、视口或大或小,等等。

        1.1 css中基本的条件逻辑

            真正的编程语言都有相应的语言构造处理一个或多个条件分支。这时候通常指的就是条件逻辑,比如 if/else 语句。这些都在css预处理器(Sass)中体现。

            媒体查询具有css中实现条件逻辑的能力。使用媒体查询,其中的样式只在某些条件具备的情况下才会被应用

    2.媒体查询语法

        @media screen and (min-width:960px){

            body{

                    ...

            }

        }

    3.如何使用媒体查询

        1.在link标签中使用媒体查询

                <link rel="stylesheet" media="sceen and (orientation:portrait)" href="style.css">这句话可以想象为对浏览器的询问,如询问了设备的类型(是屏幕吗?)然后又询问特性(你的屏幕是垂直方向吗?)。显然样式表会应用满足这两者条件下的设备,若不满足则不会获取样式。

            1.1使用组合多个媒体查询

                <link rel="stylesheet" media="sceen and (min-width:800px),projection" href="style.css">

                使用逗号分隔每个媒体查询表达式。其次,projection(投影机)之后没有任何特性/值对。表示适用于任何投影机。

        2.@import使用媒体查询

            @imort url("phone.css')screen and (max-width:360px);

                请慎用!!css中使用@import 会增加http请求(进而影响加载速度)

        3.css中使用媒体查询

            比较常见的是在css文件内部直接使用媒体查询。

                @media sceen and (查询条件){

                }

                    如果不定关键字,则关键字就是all(规范中这么说)因此,除非你真的想针对特定的媒体类型应用样式,否则就不要写screen and 了。

    4.应该把媒体查询写在哪?

        看个人喜好,有的人喜好将媒体查询写在需要的它的地方(例一),有的喜欢将它写在一起(例2)。不过从代码维护角度看,例二不利于维护。可能有的人会说例一种不是会造成冗余,是的没错。不过实际上gzip压缩(应该用它压缩服务器上的所有压缩的资源)完全可以把差别降到忽略不计的程度。

        例一、

                .thing{

                    width:50%;

                }

                @media (min-width:30rem){

                    .thing{

                        width:75%;

                    }

                }

                .thing2{

                    width:65%;

                }

                @media (min-width:30rem){

                    .thing2{

                        width:75%;

                    }

        例二、

                .thing{

                    width:50%;

                }

                .thing2{

                    width:65%;

                }

                @media (min-width:30rem){

                    .thing{

                        width:75%;

                    }

                    .thing2{

                        width:75%;

                    }

                }

    6.小结

        媒体查询只能实现可适配的web设计,即从一种布局到另一种布局的切换。为了实现最终的目标,还必须利于流式布局,以便设计可以在不同断点之间或媒体查询处理范围外弹性适应。

第三章、弹性布局应与响应式图片

        1.将固定像素大小转换为比例大小

            转化公式:  目标/上下文

            如果你要布局的宽度为960px,左侧边栏宽度为200px,左边边栏宽度为100px,那么中间区块的宽度是660px,我们的目标是把左中右区块由固定像素转化为比例大小。

            左边栏宽度为200单位(目标),用960单位(上下文)来除结果是 0.208333333.转化成百分数 即20.8333333%,后面的以此类推。

            ** 比例值的小数点后面的值尽量不要去省略,这样有助于将来的计算精确(比如嵌套元素更精确的计算)。

    2.已有css布局机制及其不足之处

            1.行内块与空白

                行内块布局最大的问题,就是会在html元素间渲染空白。

                    关于取消空白方法 可以参照

                             https://css-tricks.com/fighting-the-space-between-inline-block-elements/

            2.浮动

                1.如果给浮动元素的宽度设定百分数,那么最终计算值在不同平台上的结果不同(浏览器取整的策略不同).

                2.浮动设置完后,都要清除浮动,才能避免父盒子/元素的折叠.

            3.表格与表元

                1.需要在每个项目外面包一层(要想完美地垂直居中,表元必须包在一个表格元素中).

    3.理解Flexible Box Layout Module 及其优点

        3.Flexbox

            1.方便垂直居中内容

            2.改变元素的视觉次序

            3.在盒子里插入空白以及元素,自动对齐元素间空白

            4.支持IE9及以上版本

        4.Flexbox的对齐

            1.align-items

                在交叉轴上定位元素。让被包装元素垂直居中。

            2.align-self

                让某一个元素按照不同的方式对齐。

            3.交叉轴的对齐

                    1.flex-start:可以让元素从Flexbox父元素的起始边开始。

                    2.flex-end:沿Flexbox父元素的末尾对齐该元素。

                    3.center:把元素放在Flexbox元素的中间

                    4.baseline:让Flexbox元素中的所有项沿基线对齐

                    5.stretch:让flexbox的所有项拉伸至父元素一样大

            4.justify-content

                控制flexbox主轴对齐的属性。

                    1.flex-start

                    2.flex-end

                    3.center

                    4.space-between

                        告诉浏览器在子元素之间添加相同宽度的空白

                    5.space-around

                        告诉浏览器在他们两边各添加相同宽度的空白

    4.实现分辨率切换以及响应式图片的正确方法

            1.通过srcset切换分辨率

                <img src="scones_smell.jpg" srcset="scones_medium.jpg 1.5x,scones_large.jpg 2x" alt="Scones taste amazing">

                src属性有两个角色。一是指定1倍大小的图片,二是在不支持srcset属性的浏览器中作后备。

                对于支持srcset属性的浏览器,通过逗号分隔的图片描述,让浏览器自己决定选择哪一个。 图片描述首先是图片名(如 scones_medium.jpg),然后是一个分辨率说明。

                不过有个问题,1440像素宽 1x的屏幕会拿到跟480像素宽,3x的屏幕相同的照片。

            

第四章、html5与响应式web设计

    <!doctype html>

    <html lang="en">

    <head>

        <meta charset="uft-8">

    1.浏览器对Html5的支持情况

            所有现代的浏览器都理解HTML5中新的语义元素(新的结构化元素、视频和音频标签),IE9以下版本都可以通过引入脚本正确渲染这些元素。

    2.新的语义元素

        语义就是赋予标记含义。

        <main>:放页面的主要内容

        <section>:用于定义文档或应用中一个通用的区块

        <nav>:包装导航链接

        <article>:包含一个独立的内容块

        <aside>:用于包含与其旁边内容不相关的内容。基本任何与主内容无直接关系的,都可以放在这里边。

        <figure>和<figcaption>:figure可以包含 注解、图片、代码等等。

            例如:

                <figure class="MoneyShot">

                <img class="MoneyShotImg"src="img/scones.jpg">

                <figcaption class="ImgeCaption">Incredible scones</figcaption>

            </figure>

            <figure>元素包装一个个的独立区块。在它里面又使用<figcaption>提供了父figure元素的标题

        <details与<summary>元素

            对于'展开/收起'

            <header>

            <footer>

            <address>

            h1-h6

                h1到h6元素不能用于标记副标题、字幕、广告语,除非想把他们用作新区块或子区块的标题。

                例如: <h1>Scones:</h1> <p>The most resplendent of snacks</p>

    3.文本级语义

        <b>:以前用于加粗文本,现在可以把它用作一个添加css样式的标记

        <em>:用于给文本添加样式

        <i>:不仅仅用于把文字标为斜体,该可以突出不同文本形式的方式。

    4.作废的特性

        hgroup

    5.嵌入媒体

        <video src=""></video>

        aduio与video 区别

            音频没有视频需要的播放区域

    6.响应式视频与内嵌框架

        本地服务器上的视频解决

            1)将video 的高度和宽度属性删除

            2)css添加 video{max-width:100%;height:auto}

        嵌入视频解决方案

            原文地址: https://alistapart.com/article/creating-intrinsic-ratios-for-video

    7. 离线优先

        就是要保证网站和应用始终可以打开,即使不上网也能加载内容。

        目前还在打基础阶段,先把地址贴上有空回来再看。

               https://www.youtube.com/watch?v=4uQMI7mFB6g

               https://developers.google.com/web/fundamentals/primers/service-workers/

备注:关于flexbox更具体的参考 阮一峰的教程

http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool)

这两天就学到这么多,有什么错误请大家指正!共勉~

猜你喜欢

转载自blog.csdn.net/qq_37674616/article/details/81448160