美文网首页
响应式web设计读书笔记

响应式web设计读书笔记

作者: 星月西 | 来源:发表于2017-06-01 19:13 被阅读17次

1.响应式web设计基础

  • 弹性图片
    max-width: 100% 为图片设置最大宽度为其父容器宽度,可以保证图片正常时显示其自身宽度,当视口较小时,可以保证宽度为其父容器宽度。

  • 媒体查询
    最小宽度媒体查询,以最小屏幕为起点,在根据需求渐进扩充视觉和功能。bootstrap中栅格结构的媒体查询定义如下:

/* 超小屏幕(手机,小于 768px) */
/* 没有任何媒体查询相关的代码,因为这在 Bootstrap 中是默认的(还记得 Bootstrap 是移动设备优先的吗?) */

/* 小屏幕(平板,大于等于 768px) */
@media (min-width: @screen-sm-min) { ... }

/* 中等屏幕(桌面显示器,大于等于 992px) */
@media (min-width: @screen-md-min) { ... }

/* 大屏幕(大桌面显示器,大于等于 1200px) */
@media (min-width: @screen-lg-min) { ... }

2.媒体查询

css中的媒体查询

@media (min-width: 768px){
        background-color: red;
    }

link标签中的媒体查询

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

注意:大多数情况下,不需要指定screen这种媒体类型,使用简写语法即省略关键词all,换句话说,如果不指定关键字,则关键字就是all

  • 应用
    根据下方的CSS样式会覆盖上方目标相同的CSS样式,就能一开始设置一套基准样式,以小屏幕为起点,根据需求渐进扩充视觉和功能,如很小视口只显示文本,较大视口中为文本添加图标。
  • 设置视口
    为了利用媒体查询,应该让浏览器按设备宽度来显示网页,而不是按980px的固定宽度显示网页,因此需要添加针对视口的meta标签
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    其中,width=device-width为设置视口宽度为设备宽度
    initial-scale=1.0为将网页内容为实际大小
    还可以添加user-scalable=no禁止用户缩放

3.弹性布局

弹性布局,即网站的宽度都以百分比形式定义。

  • 将固定像素大小转换为弹性比例大小
    结果=目标/上下文
  • 应用
    对于小屏幕可以将左边栏作为画外元素,只有用户点击了菜单图标才会滑入屏幕。
.left{
    position: absolute;
    width: 300px;
    left: -300px;

    @media (min-width: 800px){
        position: relative;
        left: 0;
        width: 30%;
    }
}

4.常用布局分析

  • 行内块
    行内块会在元素之间渲染空白,需要通过设置其父元素font-size为0来消除
    行内块中垂直居中也不容易,也不能一个块宽度固定,另一个块填充剩余空间
  • 浮动
    给浮动元素的宽度设置百分比,最终计算值在不同平台上结果不同,有些浏览器向上取整,有些浏览器向下取整
    需要清除浮动,才能避免父盒子折叠
  • 表格和表元
    使用display: table和display: table-cell,可以让一个元素在另一个元素内垂直居中
  • flexbox
    方便地垂直居中内容
    改变元素的视觉次序
    在盒子间插入空白,自动对齐
  • 应用:
    使用弹性盒布局实现左右两部分的导航栏,设置最后一个元素的margin-left: auto,其左外边距会用上该侧所有可用外边距。
<nav class="nav">
            <a href="#">Home</a>
            <a href="#">About</a>
            <a href="#">Contact</a>
        </nav>
.nav{
    display: flex;
    height: 3rem;
    padding: 0 1rem;
    align-items: center;
    background-color: #000;

    a{
        color: #fff;
        margin-right: 1rem;
    }

    a:last-child{
        margin-left: auto;
    }
}

另外,可以结合媒体查询,来实现较小视口垂直显示,较大视口水平显示:

.nav{
    display: flex;
    min-height: 3rem;
    padding: 0 1rem;
    flex-direction: column;
    align-items: center;
    background-color: #000;

    @media (min-width: 800px){
        flex-direction: row;
    }

    a{
        color: #fff;

        @media (min-width: 800px){
            margin-right: 1rem;

            &:last-child{
                margin-left: auto;
            }
        }
    }   
} 
  • 粘附页脚
    在页面内容不够长时,仍然想让页脚停留在视口底部:
html{
    height: 100%;
}

body{
    display: flex;
    height: 100%;
    flex-direction: column;
}

main{
    flex: 1;
}

footer{
    padding: 2rem;
    background-color: #000;
}

关键点就是,设置body整体height: 100%,让main部分flex-grow: 1自动伸展占据空余空间

5.响应式图片

图片进行分辨率切换,可以根据视口空间的大小显示分辨率不同的图片,让高分辨率的用户看到高分辨率的图片

  • 通过srcset切换分辨率
![](pic_sm.jpg)

提供不同分辨率的图片,由浏览器来决定选择哪一个

  • srcset与sizes切换宽度
![](pic_sm.jpg)

sizes对浏览器给出提示,根据需要宽度的不同决定选择不同图片

  • picture元素
<picture>
        <source media="(min-width: 30em)" srcset="md.jpg">
        <source media="(min-width: 60em)" srcset="bg.jpg">
        ![](sm.jpg)
    </picture>

根据视口宽度的不同,提供不同的图片,其中img标签作为不支持picture标签的后备

6.html5

  • 推荐模板
    HTML5 Boilerplate,包含有重置样式,modernizr可以检测浏览器支持哪些特性,并为html标签添加上相应的样式
  • <a>标签致敬
    可以把多个元素放入一个a标签中,但是不能把a或者button,form这种交互性元素放入同一个a标签里
  • main
    主内容区,文档中特有的内容,多个文档中重复出现的导航,版权,搜索表单等不算主内容
  • section
    通用区块,可以包装联系信息,新闻源,可以用来包装可用组件
  • nav
    主导航链接,可以用nav嵌套a来替代之前ul和li的导航
  • aside
    与旁边主内容不相关的内容,侧边栏等
  • figure和figcaption
    包装小区块,包含图片和小标题
<figure>
            ![](pic.jpg)
            <figcaption>pic</figcaption>
        </figure>
  • detail和summary
    展开和收起部件
<details open>
        <summary>title</summary>
        <p>content</p>
    </details>
  • h1到h6
    不推荐使用h1到h6标记副标题,副标题应该表示为
<h1>title</h1>
<p>subtitle</p>
  • article
    博客正文和新闻报道,包含一个独立的内容块,有自己的标题和内容

7.CSS3小技巧

  • 内容超过长度就会截断,并显示出...记号
overflow: hidden;
text-overflow: ellipsis;
  • 基于nth的选择
    图片每行放四个,将最后一行的图片的底部边框去掉
    先取出底部第一个元素,再取出其后面的兄弟元素
.item:nth-child(4n+1):nth-last-child(-n+4),
.item:nth-child(4n+1):nth-last-child(-n+4) ~ .item{
        border-bottom: 0;
}
  • css自定义变量
    可以通过:root将自定义变量定义在文档根元素上,使用var引用自定义变量
:root{
    --MyColor: #ccc;
}
.var{
    color: var(--MyColor);
}

8.HTML5表单

  • fieldset和legend标签
    可以用来给表单进行分组
    <fieldset>
        <legend>color</legend>
        <div>
            <label for="name">name:</label>
            <input type="text" id="name">
        </div>
    </fieldset>
  • autocomplete 自动补全,可以通过autocomplete=“off”禁用自动补全
  • autofocus 自动聚焦,谨慎使用
  • HTML5新输入类型
    • email
    • number
    • url
    • tel
    • search
    • pattern
    • color
    • date,month,week,time
    • range
  • 表单美化
    可以在视觉上显示输入框已聚焦,并且加入渐变效果,写在前面的背景会覆盖写在后面的背景
        input{
            padding: 4px 6px;
            background-color: #f1f1f1;
            font-size: 16px;
            border: 1px solid #f1f1f1;
            outline: none;
            box-shadow: inset 0 -3px 0 #739327;

            background: radial-gradient(400px circle,  #fff 99%, transparent 99%), #f1f1f1;
            background-position: -400px 90px, 0 0;
            background-repeat: no-repeat, no-repeat;
            transition: transform .4s, box-shadow .4s, background-position .2s;

        }

        input:focus{
            border: 1px solid #739327;
            box-shadow: inset 0 -3px 0 #739327,
                0 0 15px 5px #ebebeb;
            transform: scale(1.06);
            background-position: 0 0, 0 0;
        }

相关文章

  • 响应式Web设计:HTML5和CSS3实战(一)

    一、响应式 web 设计基础 1. 什么是响应式 Web 设计? 所谓响应式 Web 设计,就是网页内容会随着访问...

  • HTML 响应式 Web 设计

    1、什么是响应式 Web 设计? RWD 指的是响应式 Web 设计(Responsive Web Design)...

  • RWD 响应式 Web 设计

    什么是响应式 Web 设计? RWD 指的是响应式 Web 设计(Responsive Web Design) R...

  • 响应式网页设计

    响应式WEB设计即 RWD(Responsive Web Design) “响应式WEB设计”这个名字是Ethan...

  • 响应式网页设计

    响应式Web设计(Responsive Web design) 所谓响应式Web设计(简称RWD),就是网页内容会...

  • HTML 响应式 Web 设计

    什么是响应式Web设计? RWD指的是响应式Web设计(Responsive Web Design) RWD能够以...

  • 响应式网页设计

    术语解释 RWD:全称为Response Web Design(响应式Web设计) 。响应式Web设计:网页会随着...

  • 响应式网页设计

    什么是响应式Web设计 响应式Web设计 英文:Responsive Web Design(RWD) 就是网页的内...

  • 响应式网页设计

    名词解释 响应式Web设计(RWD) 响应式Web设计,即Responsive Web Design,就是网页内容...

  • 响应式网页设计

    名词解释 响应式Web设计(Responsive Web Design) 所谓响应式Web设计,就是网页内容会随着...

网友评论

      本文标题:响应式web设计读书笔记

      本文链接:https://www.haomeiwen.com/subject/wbhefxtx.html