是时候真的从HTML4转到HTML5了
页面结构
常规写法
<div id="header">
<div id="nav"></div>
</div>
<div id="content">
<div class="section"></div>
<div class="section"></div>
</div>
<div id="footer"></div>
HTML5写法
<header>
<nav></nav>
</header>
<main>
<section></section>
</main>
<footer></footer>
图像的摆放
传统网页中经常会使用到图像
<img class="avatar" src="http://cdn.jirengu.com/book.jirengu.com/img/2.jpg">
<style>
.avatar {
width: 40px;
height: 40px;
}
</style>
存在的问题: 如果图片大小不规范,难以调整图片大小和位置使图片合理的展示,比如图片会变形或者只展示一部分。
可以使用如下变通的方法,用背景图片代替图片。但这种方法但缺点是麻烦,语义化缺失。
<div class="avatar" style="background: url(xxx.png)"></div>
<style>
.avatar {
width: 40px;
height: 40px;
background-repeat: no-repeat;
background-position: center center;
background-size: cover;
}
</style>
我们可以使用HTML5的新属性
<img class="avatar" src="http://cdn.jirengu.com/book.jirengu.com/img/10.jpg">
<style>
.avatar {
object-position: center center;
object-fit: cover;
}
</style>
参考MDN:object-position) MDN: object-fit
图像卡片
在传统的写法中,实现一个包含图片的卡片,一般用如下写法
<div class="item">
<img src="http://cdn.jirengu.com/book.jirengu.com/img/25.jpg">
<h2>商品标题</h2>
</div>
可以替换为HTML5的写法
<figure>
<img src="http://cdn.jirengu.com/book.jirengu.com/img/25.jpg" alt="一个电饭煲图片">
<figcaption>商品标题</figcaption>
</figure>
图像的另外一种应用场景
webp是google开发的新的图片编码格式,在质量相同的情况下,WebP格式图像的体积要比JPEG格式图像小40%。缺点是兼容性不好。
可以使用如下写法,当浏览器不支持时自动使用替换格式的链接
<picture>
<source srcset="https://static.xiedaimala.com/10.webp">
<source srcset="https://static.xiedaimala.com/10.svg">
<img src="http://cdn.jirengu.com/book.jirengu.com/img/10.jpg" />
</picture>
如果使用vue或者react之类的框架,可封装成组件。
简单的下拉菜单
传统的写法是使用js来实现。对与要求不高对场景,我们完全可以使用HTML5的 details 和 summary标签
<details>
<summary>为什么学前端?</summary>
<p>喜欢~ 你咬我。 主要还是因为工资高拉~</p>
</details>
表单
filedset
<form action="#">
<fieldset disabled>
<legend>Simple fieldset</legend>
<input type="checkbox" id="checkbox1">
<label for="checkbox1">Spirit of checkbox 1</label>
<input type="checkbox" id="checkbox2">
<label for="checkbox2">Spirit of checkbox 2</label>
</fieldset>
</form>
其他
页面展示pdf
<object type="application/pdf"
data="https://static.xiedaimala.com/test.pdf">
</object>
<style>
object {
width: 100vw;
height: 500px;
}
</style>