Node 8.9.1 建议使用nvm来管理Node版本
Git 简易基础 文档: http://www.bootcss.com/p/git-guide/
Chrome 最新浏览器 v62+
使用nvm,打开命令行工具:
看团队、看作者对框架的投入程度、对框架原理的理解
@charset "UTF-8";
@mixin flex($direction:column,$inline:block) {
//如果$inline是block,display为flex,否则为inline-flex
display: if($inline==block,flex,inline-flex);
//$direction指定方向
flex-direction: $direction;
flex-wrap: wrap;
}
element.scss
先引入需要的模块:
@import "./layout.scss";
//按钮样式
@mixin btn($size:14px,$color:#fff,$bgcolor:#F04752,$padding:5px,$radius:5px) {
padding: $padding;
background-color: $bgcolor;
border-radius: $radius;
border: 1px solid $bgcolor;//边框和背景色一样
font-size: $size;
color: $color;
text-align: center;
line-height: 1;
display: inline-block;
}
//列表,横向?纵向?
@mixin list($direction:column) {
@include flex($direction);
}
//面板样式
@mixin panel($bgcolor:#fff,$padding:0,$margin:20px 0,$height:112px,$txtPadding:0 32px,$color:#333,$fontSize:32px) {
background: $bgcolor;
padding: $padding;
margin: $margin;
>h4{
height: $height;
line-height: $height;
padding: $txtPadding;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
text-align: center;
color: $color;
font-size: $fontSize
}
}
<meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no,minimal-ui">
width:控制viewport的大小,可以指定的一个值,如 600,或者特殊的值,如device-width 为设备的宽度(单位为缩放为100%时的css像素)
height:和width相对应,指定高度
initial-scale:初始缩放比例,也即是当页面第一次load的时候缩放比例。
maximum-scale:允许用户缩放到的最大比例。
minimum-scale:允许用户缩放到的最小比例
user-scalable:用户是否可以手动缩放
viewport分几类:layout viewport(蓝色的大图)、visual viewport (裁剪出来的中间的部分)、idu viewport(手机的宽高)
上面那句代码就是让蓝色大图的大小和visual viewport一样大,铺满手机屏幕
创建一个新分支:git checkout -b router
成功创建新分支,并切换到新分支
History方式:
<html>
<head>
<meta charset="utf-8">
<meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no,minimal-ui">
<meta name="referrer" content="no-referrer">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<title>Testtitle>
<style media="screen">
html a{
color: blue;
cursor:pointer;
margin:20px 10px;
}
style>
head>
<body>
<article id="app">article>
//创建入口
<a class="api a">a.htmla>
<a class="api b">b.htmla>
<script type="text/javascript">
//注册路由
document.querySelectorAll('.api').forEach(item=>{
item.addEventListener('click',(e)=>{
e.preventDefault();//清除默认事件
let link=item.textContent;
//做一些动作。。。如打开页面等
//通过History去创建历史记录
window.history.pushState({name:'api'},link,link);
//可以接受三个参数,第一个参数:页面之间传递的参数;第二个参数:页面要显示的title;第三个参数:真实的地址
})
})
//监听路由
window.addEventListener('popstate',(e)=>{//点击后退前进才会触发popstate事件
console.log({
location:localtion.href,
state:e.state
})
})
script>
body>
html>
启动服务,测试代码 :npm start
<h3>Hashh3>
//创建入口
<a class="hash a">#a.htmla>
<a class="hash b">#b.htmla>
<script type="text/javascript">
//注册路由
document.querySelectorAll('.hash').forEach(item=>{
item.addEventListener('click',(e)=>{
e.preventDefault();//清除默认事件
let link=item.textContent;
//做一些动作。。。如打开页面等
location.hash = link;
})
})
//监听路由
window.addEventListener('hashchange',(e)=>{//点击后退前进才会触发
console.log({
location:localtion.href,
hash:location.hash
})
})
script>
测试: