遇见未知的,web开采连忙入门
分类:前端技术

CSS 框架 Bulma 教程

2017/10/26 · CSS · Bulma

原文出处: 阮一峰   

网页样式需要大量时间开发,最省事的方法就是使用 CSS 框架。

Bootstrap 是最著名的 CSS 框架,但是今天我想推荐另一个更轻量化、更易用的框架—-Bulma。有了它,即使完全不懂 CSS,也可以轻而易举做出美观的网页。

图片 1

我要感谢 100offer 对我提供赞助。100offer 是国内第一流的人力资源网站,本文结尾有他们的简介,最近想换工作的朋友可以看一下。

遇见未知的 CSS

2017/06/11 · CSS · CSS

本文作者: 伯乐在线 - 追梦子 。未经作者许可,禁止转载!
欢迎加入伯乐在线 专栏作者。

摘录自《CSS核心技术详解》

Bootstrap 有哪些优越性?

1.简单灵活的用于搭建WEB页面的HTML,CSS, JavaScript的工具集

2.基于html5, css3, 具有良好特性,友好的学习曲线,卓越的兼容性,12列的响应式栅格结构、丰富的组件、JavaScript插件、排版、表单控件,还有 基于WEB的定制工具。

3.有完整的类库,基于Less的css管理。

我们在写css时可以参照bootstrap的css源码,非常标准,优秀。

本文转自:

一、简介

Bulma 框架最大的特点,就是简单好用。所有样式都基于class,只需为 HTML 元素指定class,样式立刻生效。

JavaScript

<a class="button is-primary is-large">Login</a>

1
<a class="button is-primary is-large">Login</a>

上面代码中,a 元素只需加上几个class,就会出现一个主色调(is-primary)的大(is-large)按钮。

图片 2

Bulma 是一个手机优先的框架,提供五个宽度断点,具有良好的自适应特性,可以随心所欲为不同设备设置不同样式。

  • mobile:小于等于768px
  • tablet:大于等于769px
  • desktop:大于等于1024px
  • widescreen:大于等于1216px
  • fullhd:大于等于1408px

图片 3

它提供二十多种常用组件,比如表单 、表格、图标、面包屑、菜单、导航、Modal 窗口等等。简单的网站,可以不用写任何 CSS 代码。

1.1 CSS中你可能会疑问的几个问题

如何开始Bootstrap?

 在官网 get bootstrap.com 获取bootstrap包

一个基的本完整的Bootstrap 框架index页面,包含如下部分:

1.jQuery 要在bootstrap之前引入

2.<!DOCTYPE html>  html5 文档头

3.<meta charset=“utf-8”> 指定文档编码

4.<meta name=“view port” content=“width=device-width, initial-scale=1”> 设定初始大小和屏幕是1:1比例

5.引入bootstrap.min.css在head标签中

6.引入html5shiv.min.js && respond.min.js 能让IE9以下浏览器兼容html5

7.引入jQuery.man.js && bootstrap.min.js 在body底部

<!DOCTYPE html>
<html>
   <head>
      <title>Bootstrap 模板</title>
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <!-- 引入 Bootstrap -->
      <link href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">

      <!-- HTML5 Shim 和 Respond.js 用于让 IE8 支持 HTML5元素和媒体查询 -->
      <!-- 注意: 如果通过 file://  引入 Respond.js 文件,则该文件无法起效果 -->
      <!--[if lt IE 9]>
         <script src="http://www.bestsilkbedding.com/uploads/allimg/191113/19495a161-3.jpg"></script>
         <script src="http://www.bestsilkbedding.com/uploads/allimg/191113/19495aE3-4.jpg"></script>
      <![endif]-->
   </head>
   <body>
      <h1>Hello, world!</h1>

      <!-- jQuery (Bootstrap 的 JavaScript 插件需要引入 jQuery) -->
      <script src="http://www.bestsilkbedding.com/uploads/allimg/191113/19495930K-5.jpg"></script>
      <!-- 包括所有已编译的插件 -->
      <script src="js/bootstrap.min.js"></script>
   </body>
</html> 

通俗的讲,就是为移动设备开发网页。伴随着3G时代的到来、浏览器技术的不断进步,越来越多的人开始离开PC,使用手中的移动设备(手机、PSP、平板)上网。如果您是一个注意生活细节的人,那么在您乘坐地铁、公交的时候,请认真看看你周围的人都在干什么?是不是每人抱着一个手机在听音乐、看新闻、聊天呢?

二、基本用法

Bulma 的安装只需一步,把样式表插入网页即可。

JavaScript

<link rel="stylesheet" href="css/bulma.min.css"/>

1
<link rel="stylesheet" href="css/bulma.min.css"/>

使用更简单,就是为 HTML 元素加上class

JavaScript

<a class="button">Button</a>

1
<a class="button">Button</a>

上面的代码为 a 元素加上button类,这个链接就会被渲染成按钮。

图片 4

Bulma 提供大量的修饰类,用来改变基类的样式。它们都是以is-has-开头。比如,要改变 Button 的大小,就可以使用下面的修饰类。

JavaScript

a class="button is-small">Small</a> <a class="button">Normal</a> <a class="button is-medium">Medium</a> <a class="button is-large">Large</a>

1
2
3
4
a class="button is-small">Small</a>
<a class="button">Normal</a>
<a class="button is-medium">Medium</a>
<a class="button is-large">Large</a>

图片 5

Bulma 默认提供6种颜色。

  • is-primary
  • is-link
  • is-info
  • is-success
  • is-warning
  • is-danger

图片 6

按钮状态的修饰类如下。

  • is-hovered
  • is-focused
  • is-active
  • is-loading

完整的修饰类清单请看官方文档。

1.1.1 在CSS中为什么要有层叠

在CSS中可能会有多个样式表同时影响同一个元素的某个属性,设计这个功能的主要原因有两个,解决模块化和作者、用户、用户代理样式冲突。

  • 模块化

一个页面中的样式可以拆分成多个样式表,代码如下。

JavaScript

@import url(style/base.css); @import url(style/layer.css);

1
2
@import url(style/base.css);
@import url(style/layer.css);

但这种方式也会随之产生一个问题,即如果对某个元素的同一个属性设置样式,到底应用谁的呢?

  • 作者/用户/用户代理

当作者(写代码的人)和用户(浏览页面的人),以及用户代理(一般指浏览器)都能更改样式表时,也会产生同样的问题:究竟用谁设置的样式,因此CSS层叠机制就显得格外重要。

移动优先的策略:

Bootstrap 3 抛弃了IE7,Bootstrap 3最大的特点就是移动设备优先。

内容:决定什么是最重要的

布局:有限设计更小的宽度,基础的CSS是移动设备优先,媒体查询是针对于平板电脑,台式电脑。

渐进增强:随着屏幕大小的增加而添加元素。 (渐进增强,优雅降级两种处理兼容的方式)

 

        作为一个开发人员,如何开发出更适合于移动设备的网页呢?如何让您的站点能被多数移动设备更轻松地访问?本系列文章将会一一的为您解答。

三、网格体系

Bulma 的网格体系基于 Flex 布局,写起来非常容易。最简单的用法就是使用columns指定容器,使用column指定项目。

图片 7

JavaScript

<div class="columns"> <div class="column">First column</div> <div class="column">Second column</div> <div class="column">Third column</div> <div class="column">Fourth</div> </div>

1
2
3
4
5
6
<div class="columns">
      <div class="column">First column</div>
      <div class="column">Second column</div>
      <div class="column">Third column</div>
      <div class="column">Fourth</div>
</div>

屏幕宽度大于 768px 时,所有项目平铺,平分容器的宽度;宽度小于等于 768px 时,所有项目变成垂直堆叠。

图片 8

以下的修饰类用来指定项目的宽度。

  • 四分之三:is-three-quarters
  • 四分之一: is-one-quarter
  • 三分之二:is-two-thirds
  • 三分之一:is-one-third
  • 二分之一:is-half
  • 五分之四:is-four-fifths
  • 五分之三:is-three-fifths
  • 五分之二:is-two-fifths
  • 五分之一:is-one-fifth

图片 9

此外,还有一些修饰类也非常有用。

  • is-narrow:网格的宽度由内容的宽度决定
  • is-centered:网格内容居中对齐
  • is-gapless:网格之间没有间距

Bulma 也支持12网格体系。

  • is-2
  • is-3
  • is-4
  • is-5
  • is-6
  • is-7
  • is-8
  • is-9
  • is-10
  • is-11

图片 10

如果要指定某个网格偏移,可以用is-offset-修饰类。

  • is-offset-one-quarter
  • is-offset-one-fifth
  • is-offset-8
  • is-offset-1
1.1.2 为什么“@import”指令需要写在样式表的开头

代码如下。

JavaScript

@import url(style/layer.css); body{ background-color:red; }

1
2
3
4
@import url(style/layer.css);
body{
  background-color:red;
}

“@import”指令之所以需要写在样式表的开头,是因为这样可以使后面的样式能更好地层叠导入进来的样式。

Bootstrap 网格系统的工作原理:

1.数据行(.row)必须包含在容器(.container)中,以便为其赋予合适的对其方式和内距(padding)

eg.

<div class=“container”>

<div class=“row”></div>

</div>

2.在行(.row)中可以添加列(.column), 但列数之和不能超过平分的总列数,默认12,这个是可以改的,但是12是最佳的。

eg.

<div class=“container”>

    <div class=“row”>

<div class=“col-mod-4”></div>

<div class=“col-mod-8”></div>

    </div>

</div>

3.具体的容器应当放置在列容器(.column)之内,而且只有列(column)才可以作为行容器(.row)的直接子元素

4.通过设置内距(padding)从而创建列与列之间的间距,使用(margin)设置行与行之间的间距。

 

列的前缀表示了对一个的屏幕宽度:列可以嵌套,偏移,改变列方向和浮动像素

.col-xs-   <768px

.col-sm-  >=768px

.col-md-  >=992px

.col-lg-    >=1200px

 

        当今最受欢迎的手机系统包括 Android,iPhone ,Symbian,BlackBerry 与Web OS。这些系统浏览器都是基于webkit核心,而webkit号称是一款全功能的移动浏览器,支持 HTML CSS JavaScript,但由于移动设备本身与PC的差异,导致我们开发的网页在移动设备上总是会存在一些不如人意的地方。

四、响应式布局

前面说过,Bulma 有五个宽度断点,分别是 mobile(手机)、tablet(平板)、desktop(桌面)、widescreen(宽屏)、fullHD(高清)。

columns布局默认是在手机上垂直堆叠,其他宽度都是平铺。如果希望手机也保持平铺,可以加上is-mobile修饰类。

JavaScript

<div class="columns is-mobile"> <div class="column">1</div> <div class="column">2</div> <div class="column">3</div> <div class="column">4</div> </div>

1
2
3
4
5
6
    <div class="columns is-mobile">
      <div class="column">1</div>
      <div class="column">2</div>
      <div class="column">3</div>
      <div class="column">4</div>
    </div>

如果希望手机和平板是垂直堆叠,其他宽度平铺,可以使用is-desktop修饰类。

JavaScript

<div class="columns is-desktop"> <div class="column">1</div> <div class="column">2</div> <div class="column">3</div> <div class="column">4</div> </div>

1
2
3
4
5
6
    <div class="columns is-desktop">
      <div class="column">1</div>
      <div class="column">2</div>
      <div class="column">3</div>
      <div class="column">4</div>
    </div>

如果希望在不同设备,网格占据不同的宽度,可以像下面这样写。

JavaScript

<div class=" column is-half-mobile is-one-third-tablet is-one-quarter-desktop "> </div

1
2
3
4
5
6
7
<div class="
  column
  is-half-mobile
  is-one-third-tablet
  is-one-quarter-desktop
">
</div

上面代码中,这个网格在手机上占据二分之一宽度,平板三分之一宽度,桌面四分之一宽度,宽屏和高清则是平铺。

Bulma 允许为不同设备指定不同的布局。

JavaScript

<div class=" column is-flex-mobile is-inline-tablet is-block-desktop "> </div>

1
2
3
4
5
6
<div class="
      column
      is-flex-mobile
      is-inline-tablet
      is-block-desktop
    ">  </div>

上面代码中,手机是 flex 布局,平板是 inline 布局,其他宽度是 block 布局。

下面是隐藏某个项目的修饰类。

  • is-hidden-mobile:只在手机隐藏
  • is-hidden-tablet-only:只在平板隐藏
  • is-hidden-desktop-only :只在桌面隐藏
  • is-hidden-touch:手机和平板隐藏,其他宽度显示

完整的清单请看官方文档。

1.1.3 当CSS值为0时为什么可以省略单位

因为当CSS值为0时,任何单位的结果都是一样的,就像数学中的0乘以任何数都得0。

 

五、文字

Bulma 提供7个修饰指定文字大小。

  • is-size-1: 3rem
  • is-size-2: 2.5rem
  • is-size-3: 2rem
  • is-size-4: 1.5rem
  • is-size-5: 1.25rem
  • is-size-6: 1rem
  • is-size-7: 0.75rem

可以为不同设备指定不同的文字大小。

  • is-size-1-mobile:手机是 size-1
  • is-size-1-tablet:平板是 size-1
  • is-size-1-touch:手机和平板是 size-1
  • is-size-1-desktop:桌面、宽屏和高清是 size-1
  • is-size-1-widescreen:宽屏和高清是 size-1
  • is-size-1-fullhd:高清是 size-1

此外,还有字体颜色、对齐、轻重的修饰类。

1.1.4 margin垂直外边距折叠的意义是什么

margin垂直外边距折叠的特性主要来自传统排版,举个例子,代码如下。

XHTML

<style> body,ul,li{ margin:0; padding:0; } ul{ list-style:none; } ul>li{ margin:20px 0; } </style> <ul> <li>1111111111</li> <li>2222222222</li> <li>3333333333</li> </ul>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<style>
  body,ul,li{
    margin:0;
    padding:0;
  }
  ul{
    list-style:none;
  }
  ul>li{
    margin:20px 0;
  }
</style>
<ul>
  <li>1111111111</li>
  <li>2222222222</li>
  <li>3333333333</li>
</ul>

效果如图 1.1

图片 11

从图1.1中可以看到3行数字的垂直外边距都是一样的。如果没有这个特性,第一行数字与下面两行数字的外边距就不一样了,因为我们给每个li都设置了一个上下外边距,假如没有外边距折叠,那么第1个li的下边距加上第2个li的上边距,就是两倍的间距了,但是第一个li上面没有其他元素,所以它只有一个上边距,最终导致的结果就是,第1个li和后面的几个li的外边距不一样,这显然不是我们所希望的。而margin外边距折叠功能正是要在这种情况下,让格式可以好看一点。

1.1.1 CSS层叠规则

在介绍CSS层叠规则之前首先举个例子,代码如下。

JavaScript

<style> .box{ color:red; font-size:18px; } </style> <div class="box"> <a href="#">层叠</a> </div>

1
2
3
4
5
6
7
8
9
<style>
  .box{
    color:red;
    font-size:18px;
  }
</style>
<div class="box">
  <a href="#">层叠</a>
</div>

结果如图1.2所示:

图片 12

按理说颜色是可以继承的,那么为什么a标签的颜色没有变成红色呢?审查一下元素,如图1.3所示。

图片 13

从图1.3中可以看到继承的颜色被划掉了,出现这个问题的原因是浏览器对a标签设置了默认样式,将继承的样式层叠了,因为继承的样式权重最小。下面介绍CSS关于层叠规则是怎么计算的。

在CSS中一个样式可能会来自不同的地方,分别是作者,用户以及用户代理。那么问题来了,如果在这几份样式中,他们对同一个元素的同一个属性做了不同的操作,那么用户代理应该如何处理这段CSS呢?举个例子,代码如下。

JavaScript

/* 作者 */ .box{ color:red; } /* 用户代理 */ .box{ color:green; } /* 用户 */ .box{ color:pink; }

1
2
3
4
5
6
7
8
9
10
11
12
/* 作者 */
.box{
  color:red;
}
/* 用户代理 */
.box{
  color:green;
}
/* 用户 */
.box{
  color:pink;
}

可以看到用户代理以及用户的代码和作者写的样式起冲突了,而CSS的层叠规则就是为了解决这些问题的,以下是一些CSS层叠规则。

在层叠中每个样式规则都有一个权重值,当其中几条规则同时生效时,权重值最大的规则优先。一般来说作者指定的样式权重值高于用户样式权重值,用户样式权重值高于客户端(用户代理)权重值。

        首先我们要接触的第一个概念就是“viewport”,翻译为中文可以叫做“视区”,大家都知道移动设备的屏幕一段都比PC小很多,webkit浏览器会将一个较大的“虚拟”窗口映射到移动设备的屏幕上,默认的虚拟窗口为980像素宽(目前大部分网站的标准宽度),然后按一定的比例(3:1或2:1)进行缩放。也就是说当我们加载一个普通网页的时候,webkit会先以980像素的浏览器标准加载网页,然后再缩小为490像素的宽度。注意这个缩小是一个全局缩小,也就是页面上的所有元素都会缩小。如下图所示,一个普通的文章页面在移动设备的效果:

六、定制

最后这个部分是高级内容,讲解如何定制 Bulma,也就是修改默认样式。Bulma 采用 Sass 语法(注意,不是 Scss 语法),所以定制的样式也必须使用 SASS。

首先,克隆或下载源码。

JavaScript

$ git clone

1
$ git clone https://github.com/jgthms/bulma.git

然后,安装依赖。

JavaScript

$ cd bulma $ npm install

1
2
$ cd bulma
$ npm install

接着,在源码的根目录里面,新建一个app.sass文件,定制的代码都写在这个文件。在它里面,先引入 Bulma 基础变量。如果需要的话,可以改掉。

JavaScript

@import "./sass/utilities/initial-variables" $blue: #72d0eb $pink: #ffb3b3 $family-serif: "Merriweather", "Georgia", serif

1
2
3
4
5
@import "./sass/utilities/initial-variables"
 
$blue: #72d0eb
$pink: #ffb3b3
$family-serif: "Merriweather", "Georgia", serif

上面代码中,预设的bluepinkfamily-serif变量被改掉。

有一些 Bulma 变量是从基础变量衍生的,需要的话也可以改掉。

JavaScript

$primary: $pink

1
$primary: $pink

上面代码中,主色调改成了pink变量。

接着,在这个文件里面加载 Bulma 的入口脚本。

JavaScript

@import "./bulma"

1
@import "./bulma"

这一行的下面,你就可以写自己的样式了,比如为所有标题加一个下划线。

JavaScript

.title { text-decoration: underline; }

1
2
3
    .title {
      text-decoration: underline;
    }

最后,打开package.json,找到下面这一行。

JavaScript

"build-sass": "node-sass --output-style expanded --source-map true bulma.sass css/bulma.css

1
"build-sass": "node-sass --output-style expanded --source-map true bulma.sass css/bulma.css

把里面的bulma.sass改成app.sass

JavaScript

"build-sass": "node-sass --output-style expanded --source-map true app.sass css/bulma.css",

1
    "build-sass": "node-sass --output-style expanded --source-map true app.sass css/bulma.css",

以后每次修改完样式,运行一下npm run build,就会生成自己的样式表css/bulma.css了。

(全文完)

1 赞 5 收藏 评论

图片 14

在层叠顺序中,以下权重值从小到大。
  1. 用户代理样式
  2. 用户一般样式
  3. 作者一般样式
  4. 作者重要样式(!important)
  5. 用户重要样式(!important)
  6. 如果是两个样式来自同一个地方,如都来自作者,并且它们的样式声明同样重要,则根据特异度来计算,特异度高的会覆盖特异度低的
  7. 如果特异度也相同,则越往后的样式优先级越高

<ignore_js_op>图片 15

!important声明规则

!important声明的样式比一般声明优先级高,并且用户设置的!important比作者设置的!important优先级高。这样做的原因是为了方便用户实现一些特殊的要求,例如页面字体大小的调整等。

下面举一个!important规则的例子,代码如下。

JavaScript

<style> .box{ color:red !important; } .box{ color:green; } </style> <div class="box">!important</div>

1
2
3
4
5
6
7
8
9
<style>
  .box{
    color:red !important;
  }
  .box{
    color:green;
  }
</style>
<div class="box">!important</div>

在正常情况下,后一个“color:green”会层叠前一个“color:red”,但这里我们给“color:red”设置了!important规则,所以前一个优先级高。

 

选择器特异度的计算
  1. 如果一个声明出现在元素的style属性中,则将a计为1
  2. b等于选择器中所有id选择器加起来的数量和
  3. c等于选择器中所有class选择器和属性选择器,以及伪类选择器加起来的数量和
  4. d等于选择器中所有标签选择器和伪元素选择器加起来的数量和

将a、b、c、d这4个数字连接起来(a-b-c-d)就组成了选择器的特异度。一段特异度的计算,如下所示。

JavaScript

.box{} /* a=0 b=0 c=1 d=0 特异度 = 0,0,1,0 */ .box div{} /* a=0 b=0 c=1 d=1 特异度 = 0,0,1,1 */ #nav li{} /* a=0 b=1 c=0 d=1 特异度 = 0,1,0,1 */ p:first-line{} /* a=0 b=0 c=0 d=2 特异度 = 0,0,0,2 */ style="" /* a=1 b=0 c=0 d=0 特异度 = 1,0,0,0 */

1
2
3
4
5
.box{}           /* a=0 b=0 c=1 d=0 特异度 = 0,0,1,0 */
.box div{}       /* a=0 b=0 c=1 d=1 特异度 = 0,0,1,1 */
#nav li{}        /* a=0 b=1 c=0 d=1 特异度 = 0,1,0,1 */
p:first-line{}   /* a=0 b=0 c=0 d=2 特异度 = 0,0,0,2 */
style=""         /* a=1 b=0 c=0 d=0 特异度 = 1,0,0,0 */

它们的比较顺序是先比较a,如果a的值都相同,那么接着比较b、c、d的值,谁的数大则优先级就越高。

在使用CSS选择器时,你需要注意以下两点。

  • 继承的优先级最低,没有特异度;
  • 结合符(如 、>等)及通用选择符(*)特异度为0。

因此,可以知道之前a标签color属性为什么没有被应用了,因为继承的优先级最低。

        页面以980像素加载,没为变形,但是按比例缩放后,已经没有多少东西是可以用肉眼看清的了,好在一般的移动设备都支持屏幕放大。放大之后,我们才能看清屏幕上的内容。

1.1.6 CSS的命名

在代码复用时,也许你写过类似以下这样的代码,代码如下

JavaScript

size-10{ font-size:10px; }

1
2
3
size-10{
font-size:10px;
}

虽然这段代码看起来没什么问题,但如果考虑到可维护性,那就有很大问题了。假如有一天你不想用10px,想改成12px,也许你会想再加一个class就行了,修改后的代码如下

JavaScript

size-10{ font-size:10px; } size-12{ font-size:12px; }

1
2
3
4
5
6
size-10{
    font-size:10px;
}
size-12{
    font-size:12px;
}

但那些页面中原本用的size-10的class都得修改成size-12,所以不建议这么修改代码。笔者建议用语义的方式命名,代码如下

JavaScript

.size-small{ font-size:12px; }

1
2
3
.size-small{
  font-size:12px;
}

这样写代码的好处是当需要调整字体大小时,只需修改一处,而不必修改添加到元素上的class。也就是说不要按照显示的效果命名,而是根据这个class的用意命名。

        怎么样,对viewport的概念有一定的了解了吧?那么我们能不能人为改变webkit的视区呢?当然能,在<head>与</head>之间加上如下视区代码:

1.2 CSS的一些技巧

  1. <meta name="viewport" content="width=500" />
1.2.1 使用pointer-events控制鼠标事件

可以用CSS中的pointer-events来控制元素什么时候响应鼠标事件,比较常用的一个场景是获取验证码,如图1.4所示。

图片 16

图1.4 获取验证码

当用户单击“获取验证码”按钮后,需要等待60秒才能再次单击“重发验证码”按钮,在这种情况下,就可以尝试用pointer-events实现禁用鼠标单击事件。在pointer-events属性中有一个none值,将pointer-events的值设置成none就不会响应鼠标事件了。举一个获取验证码的例子,代码如下。

JavaScript

<style> a{ color:red; } .disable{ pointer-events:none; color:#666; } </style> <a href="javascript:;" id="btn">发送验证码</a> <script> var oBtn = document.getElementById('btn'); oBtn.onclick = function(){ oBtn.classList.add('disable'); setTimeout(function(){ oBtn.classList.remove('disable'); },3000) }; </script>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<style>
    a{
        color:red;
    }
    .disable{
        pointer-events:none;
        color:#666;
    }
</style>
<a href="javascript:;" id="btn">发送验证码</a>
<script>
    var oBtn = document.getElementById('btn');
    oBtn.onclick = function(){
        oBtn.classList.add('disable');
        setTimeout(function(){
            oBtn.classList.remove('disable');
        },3000)
    };
</script>

如果看不懂这段代码也没关系,将这段代码复制下来即可。这段代码的意义就是定义了一个鼠标事件禁用的class,单击“发送验证码”按钮后加上刚刚定义的.disable,3秒以后再将这个class去掉。默认情况下的按钮,如图1.5所示

图片 17

图1.5 默认情况下

单击此按钮后,在3秒内不会再次响应单击事件。

pointer-events除了可以实现此功能之外,还有很多用处,比如实现a标签禁止页面跳转,提高网页性能,用户在滚动页面时可能会不小心碰到一些元素上绑定的事件,这些事件就会被触发,从而浪费资源,但如果在页面滚动时给body加上pointer-events:none;属性,那么就避免了这个问题。

pointer-events还有一个妙用,比如将一个遮罩层元素的属性设置为pointer-events:none;,这样就可以单击到遮罩层后面的内容,如图1.6所示。

图片 18

图1.6 运用了pointer-events以后

如图1.6所示可以看到选中了遮罩层后面的内容,但需要注意的是,pointer-events:none只是用来禁用鼠标的事件,通过其他方式绑定的事件还是会触发的,比如键盘事件等。另外,如果将一个元素的子元素pointer-events设置成其他值,如auto,那么当单击子元素时,还是会通过事件冒泡的形式触发父元素的事件。

我们来看看页面加上强制视区大小命令后效果怎么样? 如下图所示:

1.2.2 玩转CSS选择器

<ignore_js_op>图片 19

1. 当父元素只有一个子元素时会被选中,代码如下

JavaScript

<style> div:first-of-type:last-of-type{ color:red; } </style> <div>123</div>

1
2
3
4
5
6
<style>
    div:first-of-type:last-of-type{
        color:red;
    }
</style>
<div>123</div>

当只有一个div元素时,效果如图1.7所示。当有多个div时不会被选中,效果如图1.8所示。

图片 20

图1.7 当只有一个div时

图片 21

图1.8 当有多个div时

当然更简单的方法是直接用CSS3中的结构性伪类选择器,当父元素只有一个子元素时会被选中,如下:

JavaScript

:only-child

1
:only-child

不妨去试试。

怎么样?是不是好了很多?那么有没有更好的方法呢?比如说我们自动检测移动设备屏幕大小,然后让内容自适应。很简单,看来面的代码:

2.当父元素有多个子元素时,选中第1个

JavaScript

<style> div:not(:last-of-type):first-of-type{ color:red; } </style> <div>11111</div>

1
2
3
4
5
6
<style>
    div:not(:last-of-type):first-of-type{
        color:red;
    }
</style>
<div>11111</div>

只有一个子元素时,不会被选中,效果如图1.9所示。当有多个子元素时,它会选中第一个,效果如图1.10所示。

图片 22

图1.9 只有一个子元素时

图片 23

图1.10 当有多个子元素时

当然,如果有多个子元素时,也可以选择其中任意一个子元素,但最后一个是选中不了的,因为我们已经用“:not”否定了最后一个元素。如果想要摆脱这种限制,可以使用下面这种方案,代码如下。

JavaScript

:not(:only-child)

1
:not(:only-child)

以有多个子元素时选中最后一个子元素为例,代码如下

JavaScript

<style> div:not(:only-child):last-of-type{ color:red; } </style> <div>11111</div> <div>22222</div> <div>33333</div>

1
2
3
4
5
6
7
8
<style>
    div:not(:only-child):last-of-type{
        color:red;
    }
</style>
<div>11111</div>
<div>22222</div>
<div>33333</div>

当一个父元素有多个子元素时,最后一个元素会被选中,效果如图所示。

图片 24

  1. <meta name="viewport" content="width=device-width" />
案例

合理使用这些选择器可以做很多事情,比如当只有一个子元素时,可以让它居中显示,如果有多个子元素时,可以让它水平排列,代码如下

JavaScript

<style> .box div{ width:100px; height:100px; border:1px solid red; margin:0 auto; } .box div:not(:only-child){ float:left; margin-left:20px; } </style> <div class="box"> <div></div> </div>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<style>
   .box div{
        width:100px;
        height:100px;
        border:1px solid red;
        margin:0 auto;
   }
   .box div:not(:only-child){
        float:left;
        margin-left:20px;
   }
</style>
<div class="box">
    <div></div>
</div>

当只有一个子元素时,这个div就会被居中显示,如下图1.12

图片 25

图1.12 当只有一个子元素时,这个div就会被居中显示

当有多个子元素时,效果如图所示

图片 26

<ignore_js_op>

1.2.3利用padding实现元素等比例缩放

padding和margin有一个很奇怪的特点,它们的上下外边距的百分比是根据父元素的宽度来计算的。举个例子,代码如下。

JavaScript

<style> .box{ width:100px; height:10px; } .box div{ width:100%; padding-bottom:100%; background-color:red; } </style> <div class="box"> <div></div> </div>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<style>
   .box{
        width:100px;
        height:10px;
   }
   .box div{
        width:100%;
        padding-bottom:100%;
        background-color:red;
   }
</style>
<div class="box">
    <div></div>
</div>

效果如图1.14

图片 27

图1.14 padding、margin上下外边距的百分比

在此例子中可以看到 div 的宽度和高度都是 100px。如果根据父元素的高度来计算,那么div 的高度最终应该是 10px,而不是 100px,因此,若需要实现一个等比例的元素,就可以利用这个特性,但如果使用这种方式,还需要解决另外一个问题,就是如果直接在子元素div中写入内容,那么高度会被“撑开”,那就不是等比例了。代码如下。

JavaScript

<div class="box"> <div>padding-bottom</div> </div>

1
2
3
<div class="box">
    <div>padding-bottom</div>
</div>

若在div中加入一段文字,那么高度就不再是等比例了,效果如图1.15所示。

图片 28

图1.15 在div中加入一段文字后的高度

但是可以将代码进行修改,修改后的代码如下。

JavaScript

<style> .box{ width:30%; height:10px; } .box div{ position:relative; overflow:hidden; background-color:red; } .box div::after{ content:''; display:block; padding-top:100%; } .box div span{ position:absolute; left:0; top:0; } </style> <div class="box"> <div> <span>图片</span> </div> </div>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<style>
   .box{
        width:30%;
        height:10px;
   }
   .box div{
        position:relative;
        overflow:hidden;
        background-color:red;
   }
   .box div::after{
        content:'';
        display:block;
        padding-top:100%;
   }
   .box div span{
        position:absolute;
        left:0;
        top:0;
   }
</style>
<div class="box">
    <div>
        <span>图片</span>
    </div>
</div>

利用伪元素的padding-top来“撑开”父元素的高,内容通过绝对定位来使用,因为绝对定位的元素是不占位置的,这样一个等比例宽高缩放就完成了。有时这种特性很有用,比如针对下面这个需求,如图1.16所示。

现在需要将图片等比例缩放,也就是宽和高一样,但图片的宽度是自适应屏幕大小的,img标签在只写宽度不写高度的情况下,高度会自适应宽度。图片没有加载出来之前的情况,如图1.17所示。

图片 29

图1.16 需求

这个需求是这样的,图片等比例缩放,也就是宽和高得一样,但问题是图片的宽度是自适应屏幕大小的,原本很简单因为img标签在只写宽度不写高度的情况下,高度会自适应宽度,但问题不在这,而是如果图片在没有加载出来的情况下,会是这样的,如图1.17

图片 30

图1.17 在图片没有加载出来时

从图1.17可以看到在图片没有加载出来之前高度就没有了,这时利用CSS属性paddding-top就可以解决这个问题,代码如下

CSS

.photo a{ position:relative; float:left; width: calc(33.33% - 1.6rem); margin:1.2rem 0 0 1.2rem; outline:1px solid #dedede; } .photo a::before{ content:''; display:block; padding-top:100%; } .photo a img{ position:absolute; left:0; top:0; width:100%; height:100%; }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
.photo a{
    position:relative;
    float:left;
    width: calc(33.33% - 1.6rem);
    margin:1.2rem 0 0 1.2rem;
    outline:1px solid #dedede;
}
.photo a::before{
    content:'';
    display:block;
    padding-top:100%;
}
.photo a img{
    position:absolute;
    left:0;
    top:0;
    width:100%;
    height:100%;
}

使用一个伪元素将高度“撑起来”,而图片通过定位来做。还有一种更简单的做法,就是直接给a标签设置高度,单位使用vw。vw单位是相对于视口(屏幕)宽度的,代码如下。

CSS

.photo a{ float:left; width: calc(33.33% - 1.6rem); height: calc(33.33vw

  • 1.6rem); margin:1.2rem 0 0 1.2rem; outline:1px solid #dedede; } .photo a img{ display:block; width:100%; height:100%; }
1
2
3
4
5
6
7
8
9
10
11
12
.photo a{
    float:left;
    width: calc(33.33% - 1.6rem);
    height: calc(33.33vw - 1.6rem);
    margin:1.2rem 0 0 1.2rem;
    outline:1px solid #dedede;
}
.photo a img{
    display:block;
    width:100%;
    height:100%;
}

宽度怎么设置,高度就怎么设置,就是把百分比换成vw。但是只在自适应方面才能这样用,如果是固定的宽、高,直接设置成一样的就行了,虽然vw可以实现,但兼容性还不是很好。

图片 31

1.2.4 calc函数

在CSS中,如果需要用计算的功能,那么calc函数将非常有用。calc函数允许进行任何长度值的计算,运算符可以是加( )、减(-)、乘(*)、除(/)等。但需要注意的是,运算符前后都需要保留一个空格,虽然在某些特殊情况下可能不需要,但最好都加上,下面来介绍一些calc函数的使用场景。

device-width将自动检测移动设备的屏幕宽度。

场景一:

如图1.18所示,图中的内容一旦超过了浮动元素的高,那么这些文本就会与图片左对齐,这种效果并不是我们想要的。我们想要的效果,如图1.19所示。

图片 32

图1.18 实际不理想的效果

图片 33

图1.19 预期理想的效果

如果知道图片的宽度,那么解决这个问题也很简单,给这段文本添加一个左边距即可,但如果图片使用的是百分比,那么就无能为力了,而如果使用calc函数可以很好地解决这个问题,代码如下。

JavaScript

<style> .box img{ width:50%; float:left; } .box p{ margin-left:calc(50% 10px); } </style> <div class="box"> <img src="psb.jpg" alt=""> <p>......</p> </div>

1
2
3
4
5
6
7
8
9
10
11
12
13
<style>
    .box img{
        width:50%;
        float:left;
    }
    .box p{
        margin-left:calc(50% 10px);
    }
</style>
<div class="box">
    <img src="psb.jpg" alt="">
    <p>......</p>
</div>

利用calc函数更改代码后的效果如图1.20所示

图片 34

图1.20 利用calc函数的效果

怎么样?满意了吧?所有页内容都和移动设备屏幕自适应。

场景二:

有时使用百分比会出现一个问题,如图1.21所示。

图片 35

图1.21 使用百分比时可能会出现的问题

其中CSS代码为

<style> .box img{ width:25%; margin:20px; float:left; } </style><code>

1
2
3
4
5
6
7
<style>
.box img{
width:25%;
margin:20px;
float:left;
}
</style><code>

导致这个问题出现的原因是使用了margin值,而代码中的width:25%并没有减去这个margin值。因此只需要用calc函数减去margin值就可以了,代码如下

<style> .box img{ width:calc(25% - 40px); margin:20px; float:left; } </style><code>

1
2
3
4
5
6
7
<style>
.box img{
width:calc(25% - 40px);
margin:20px;
float:left;
}
</style><code>

最终效果如图1.22所示

图片 36

图1.22 使用calc函数的最终效果图

下面我们以一个列表页面为例,讲解一下如何让我们开发的页面能够在移动设备上完美的呈现。原始页面台下图所示: <ignore_js_op>图片 37

场景三:

如果再结合媒体查询,那么就很容易实现一个响应式的布局,代码如下。

<style> .box img{ width:calc(100% / 4 - 40px); margin:20px; float:left; } @media (max-width:600px){ .box img{ width:calc(100% / 2 - 40px); } } </style><code>

1
2
3
4
5
6
7
8
9
10
11
12
<style>
.box img{
width:calc(100% / 4 - 40px);
margin:20px;
float:left;
}
@media (max-width:600px){
.box img{
width:calc(100% / 2 - 40px);
}
}
</style><code>

这段代码表示在屏幕不小于600px时,一行最多可以放4张图片,如果屏幕小于或等于600px时,一行最多只能放两张图片。

 

1.3 隐藏元素

千万不要小看“隐藏”这个技能,多了解一点,就多一种选择。如果你是一个新手,就会发现在本节将出现很多你不认识的属性,它们可能是在CSS 2中就有的属性,也可能是在CSS 3中出现的新属性。

代码如下所示:

1. 通过设置 width:0; 或 height:0; 隐藏一个元素

JavaScript

div{width:0;}

1
div{width:0;}

JavaScript

div{height:0;}

1
div{height:0;}

一个物体是由宽和高组成的,那么至少这个物体得有宽和高,这种方式的缺点是隐藏不了文字。可以将元素的color设置成与背景色一样的颜色,这样就看不见了。也可以设置成透明色(transparent),但问题是它们的内容还是存在的,所以需要将文字的大小设置成0,代码如下

JavaScript

div{font-size:0;}

1
div{font-size:0;}

<html>

2. 将元素的opacity:0;设置成0

JavaScript

div{opacity:0;}

1
div{opacity:0;}

元素本身还在,只是看不见而已

JavaScript

div{ opacity:0; filter:alpha(opacity:0); }

1
2
3
4
div{
    opacity:0;
    filter:alpha(opacity:0);
}

<head>

3. 通过定位将元素移出屏幕范围

JavaScript

div{ position:absolute; left:-9999px; }

1
2
3
4
div{
   position:absolute;
   left:-9999px;
}

元素还在,只是超出了屏幕范围,看不见了而已。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

4. 通过 text-indent 实现隐藏文字效果

JavaScript

div{text-indent:-999999px;}

1
div{text-indent:-999999px;}

给页面添加LOGO图片,若还想让搜索引擎搜索到,则需要添加这段文字,但如果又不想显示这段文字,就可以使用这个方法。

<meta name="viewport" content="user-scalable=no,width=device-width" />
<title>列表</title>
</head>
<body>
<div id="header">
<h1><a href="#">移动web列表演示</a></h1>
</div>
<div id="nav">
<ul id="taskList">
<li><a href="pre.html">准备会议资料</a></li>
<li><a href="webmeeting.html">参加关于移动web开发的技术讨论会</a></li>
<li><a href="meetingjack.html ">会见客户Jack</a></li>
 <li><a href="designdoc.html">整理XX系统设计文档</a></li>
</ul>div>
<div id="container"></div>
<div id="footer"><span>Copyright © 2010-2015 IdeasAndroid.
All rights reserved.</span></div>
</body>
</html>

5. 通过z-index隐藏一个元素

JavaScript

<style> .box{ position:relative; } .box .item{ position:absolute; left:0; top:0; width:100px; height:100px; border:1px solid red; z-index:-1; } .box .item:first-of-type{ z-index:1; } </style> <div class="box"> <div class="item">程序员</div> <div class="item">设计师</div> </div>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<style>
   .box{
       position:relative;
   }
   .box .item{
       position:absolute;
       left:0;
       top:0;
       width:100px;
       height:100px;
       border:1px solid red;
       z-index:-1;
   }
   .box .item:first-of-type{
   z-index:1;
   }
</style>
<div class="box">
<div class="item">程序员</div>
<div class="item">设计师</div>
</div>

但你会发现文字被“透”上来了,效果如图

图片 38

因为默认的背景设置是透明的,并且允许下面的元素“透”上来,想解决这个问题很简单,就是给元素添加一个背景,代码如下。

CSS

.box .item{ position:absolute; left:0; top:0; width:100px; height:100px; border:1px solid red; background-color:#fff; z-index:-1; }

1
2
3
4
5
6
7
8
9
10
.box .item{
        position:absolute;
        left:0;
        top:0;
        width:100px;
        height:100px;
        border:1px solid red;
        background-color:#fff;
        z-index:-1;
}

设置完成后,效果如图

图片 39

下面,我们介绍一个简单的概念,大家知道,我们开发的web页面需要在不同的设备上显示,我们需要在不同的设备上使用不同的样式表(CSS),才能让我们的页面显示的更完美。比如说我们开发的页面需要在手机和平板电脑上使用不同的CSS,那么代码如下所示:

6. 通过给元素设置overflow来隐藏元素

CSS

div{ width:100px; height:100px; overflow:hidden; }

1
2
3
4
5
div{
    width:100px;
    height:100px;
    overflow:hidden;
}

如果元素超出所设置的宽和高,溢出的部分就会被隐藏。如果想让整个元素隐藏,将元素的宽和高设置成0即可。经常通过这种方式将超出的文字隐藏,代码如下

<link rel="stylesheet" type="text/css" href="android.css"

享受一片宁静的天空。

当中文超出7个字符以后,文字就会被隐藏,效果如图

图片 40

media="only screen and (max-width: 480px)" />

7. 通过visibility将元素设置为不可见

JavaScript

div{visibility:hidden;}

1
div{visibility:hidden;}

虽然元素不可见,但还占位置。

<link rel="stylesheet" type="text/css" href="tab.css"

8. 通过display将元素彻底隐藏

JavaScript

div{display:none;}

1
div{display:none;}

元素会被隐藏,并且不占位置。

media="screen and (min-width: 481px)" />

9. 将元素的背景设置为透明,字体大小设置为0

JavaScript

div{ font-size:0; background-color:transparent; }

1
2
3
4
div{
    font-size:0;
    background-color:transparent;
}

元素还在,只是看不见。

这里media属性就是根据屏幕属性选择不同的CSS,第一个的意思是,只有在屏幕宽度小于480px的时候使用android.css文件,第二个的意思是当屏幕大于481px时,使用tab.css文件。我们来看看android.css文件:

10. 将元素的max-width或max-height设置为0

JavaScript

div{max-height:0;}

1
div{max-height:0;}

JavaScript

div{max-width:0;}

1
div{max-width:0;}

这样元素的宽度就只能是0了,但是还有文字溢出的问题,如图1.26所示。

图片 41

图1.26 文字溢出

尽管元素宽度是 0,但文字还是被显示出来了,若想解决这个问题,将文字大小设置成0就可以了,或者使用代码overflow:hidden;如果你仔细看这个效果,会发现它实际上是一个文字竖排的效果,不过对于英文来说,还得设置一个换行属性,换行属性代码如下

@CHARSET "UTF-8";

享受一片宁静的天空AAA

效果如图1.27

图片 42

图1.27 通过设置word-break:break-all;解决英文不换行问题

body {

11. 通过transform的translate函数来隐藏一个元素

JavaScript

div{transform:translate(-99999px);}

1
div{transform:translate(-99999px);}

left:-99999px;原理一样,把元素移出屏幕可视区。

background-color: #ddd;
color: #222;
font-family: Helvetica;
font-size: 14px;
margin: 0;
padding: 0;
}

12. 将元素的缩放设成0

JavaScript

transform:scale(0);

1
transform:scale(0);

看不见我,看不见我。

#header h1 {

13. 让元素重叠

JavaScript

div{transform:skew(90deg);}

1
div{transform:skew(90deg);}

元素重叠了,类似width等于0。

margin: 0;
padding: 0;
}

14. 设置margin负值

JavaScript

div{margin-left:-999999px;}

1
div{margin-left:-999999px;}

将元素移出屏幕可视区

#header h1 a {

15. 将元素裁剪

JavaScript

-webkit-clip-path:polygon(0px 0px,0px 0px,0px 0px,0px 0px);

1
-webkit-clip-path:polygon(0px 0px,0px 0px,0px 0px,0px 0px);

完,带上愉快的心情,踏上CSS之旅。

打赏支持我写出更多好文章,谢谢!

打赏作者

background-color: #ccc;
border-bottom: 1px solid #666;

打赏支持我写出更多好文章,谢谢!

任选一种支付方式

图片 43 图片 44

2 赞 7 收藏 评论

color: #222;
display: block;
font-size: 20px;
font-weight: bold;
padding: 10px 0;
text-align: center;
text-decoration: none;

关于作者:追梦子

图片 45

快乐一直在我们身边,不管你身处何地何时,只要心是快乐的,一切都是快乐的。是那一秒,也是那一秒,都不会改变。 个人主页 · 我的文章 · 8 ·    

图片 46

<!–给标题增加1个像素白色的阴影,同时增加一个渐变背景 –>

text-shadow: 0px 1px 1px #fff;

background-image: -webkit-gradient(linear, left top, left bottom, from(#ccc),

 to(#999) );

}

 

#container{
padding: 10px 10px;
}

#nav ul {

list-style: none;
margin: 8px;
padding: 0;
}

#nav ul li a {

background-color: #FFFFFF;

border: 1px solid #999999;
color: #222222;
display: block;
font-size: 17px;
font-weight: bold;
margin-bottom: -1px;
padding: 12px 10px;
text-decoration: none;
}

/*

* 给列表第一项增加圆角效果

*/

#nav ul li:first-child a {

 -webkit-border-top-left-radius: 6px;

 -webkit-border-top-right-radius: 6px;

}

 

/*
* 给列表最后一项增加圆角效果
*/
#nav ul li:last-child a {
 -webkit-border-bottom-left-radius: 6px;
 -webkit-border-bottom-right-radius: 6px;
}

#footer {

display: block;
padding: 10px 10px;
}

和普通页面一样,我们只是增加了适用于移动设备的背景渐变、阴影效果,还给列表的第一项上方和列表最后一项上方增加了圆角效果,最终效果如下图所示:

<ignore_js_op>图片 47

怎么样?在手机上是不是很漂亮?对于平板电脑使用的css,我们这里仅改变了一下背景颜色,在平板电脑上使用tab.css最终效果如下所示:

<ignore_js_op>图片 48

最后我们来完善一下我们的列表页面,使用jquery的ajax加载列表详细内容。最后实现的效果就是单击列表任意一项,如下所示:

<ignore_js_op>图片 49

在我们的css文件中,增加返回按钮样式,代码如下所示:

  1. #header div.leftButton {
    1.     font-weight: bold;
    1.     text-align: center;
    1.     line-height: 28px;
    1.     color: white;
    1.     text-shadow: 0px -1px 1px rgba(0,0,0,0.6);
    1.     position: absolute;
    1.     top: 7px;
    1.     left: 6px;
    1.     max-width: 50px;
    1.     white-space: nowrap;
    1.     overflow: hidden;
    1.     text-overflow: ellipsis;
    1.     border-width: 0 8px 0 14px;
    1.     -webkit-border-image: url(images/back_button.png) 0 8 0 14;
    1.     -webkit-tap-highlight-color: rgba(0,0,0,0);
    1. }
        1. #header div.leftButton.clicked {
    1.     -webkit-border-image: url(images/back_button_clicked.png) 0 8 0 14;
    1. }

复制代码

  增加js文件android.js,代码如下所示:

  1. var hist = [];
    1. $(document).ready(function(){
    1.          $('#nav a').click(function(e){
    1.                    e.preventDefault();
    1.                    loadPage(e.target.href);
    1.                    });
    1.          loadPage("null");
    1. });
        1. function loadPage(url) {
    1.     $('#container').load(url, function(result){
    1.              if(url=='null'){
    1.                        $('#nav').show();
    1.              }else{
    1.                        $('#nav').hide();
    1.              }
    1.         var title = $('h2').html() || '<a>移动web列表演示</a>';
    1.         $('h1').html(title);
    1.         $('h2').remove();
    1.         $('.leftButton').remove();
    1.         hist.unshift({'url':url, 'title':title});
    1.         if (hist.length > 1) {
    1.             $('#header').append('<div class="leftButton">返回</div>');
    1.             $('#header .leftButton').click(function(e){
    1.                 $(e.target).addClass('clicked');
    1.                 var thisPage = hist.shift();
    1.                 var previousPage = hist.shift();
    1.                 loadPage(previousPage.url);
    1.             });
    1.         };
    1.     });
    1. }

复制代码

  实现所有功能后列表页面完整的代码如下所示:

  1. <html>
    1. <head>
    1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    1. <meta name="viewport" content="user-scalable=no,width=device-width" />
    1. <link rel="stylesheet" type="text/css" href="assets/css/android.css"
    1.          media="only screen and (max-width: 480px)" />
    1. <link rel="stylesheet" type="text/css" href="assets/css/tab.css"
    1.          media="screen and (min-width: 481px)" />
    1. <link rel="apple-touch-icon-precomposed" href="homeIcon.png" />
    1. <script type="text/javascript" src="assets/js/jquery.js"></script>
    1. <script type="text/javascript" src="assets/js/android.js"></script>
    1. <title>列表</title>
    1. </head>
    1. <body>
    1. <div id="header">
    1. <h1><a href="#">移动web列表演示</a></h1>
    1. </div>
    1. <div id="nav">
    1. <ul id="taskList">
    1.          <li><a href="pre.html">准备会议资料</a></li>
    1.          <li><a href="webmeeting.html">参加关于移动web开发的技术讨论会</a></li>
    1.          <li><a href="meetingjack.html">会见客户Jack</a></li>
    1.          <li><a href="designdoc.html">整理XX系统设计文档</a></li>
    1. </ul>
    1. </div>
    1. <div id="container"></div>
  2. <div id="footer"><span>Copyright © 2010-2015 IdeasAndroid.
    All rights reserved.</span></div>
    </body>
    </html>

  如上代码中,我们增加了一行灰色底色的代码:

  1. <link rel="apple-touch-icon-precomposed" href="homeIcon.png" />

  这段代码的作用是在android手机增加web快捷方式的到home主页时显示的图标。

  好了,最后总结一下我们进行android手机web开发的几个关键的东西:
  1、 viewport(视区)。
  2、 css文件自适应。
  3、 增加渐变、阴影、圆角等适用于移动设备的效果。
  4、 快捷方式图标:apple-touch-icon-precomposed。
  androidweb开发涉及到的东西还很多,本文仅是简单的介绍一点入门知识,更多的内容还需要自己去实践,去学习。希望本文对您有所帮助。

本文由pc28.am发布于前端技术,转载请注明出处:遇见未知的,web开采连忙入门

上一篇:分享前端开发常用代码片段,28个常用JavaScript方 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • 遇见未知的,web开采连忙入门
    遇见未知的,web开采连忙入门
    CSS 框架 Bulma 教程 2017/10/26 · CSS ·Bulma 原文出处:阮一峰    网页样式需要大量时间开发,最省事的方法就是使用 CSS 框架。 Bootstrap 是最著名的 CSS框架,
  • 追踪客户,读书笔记
    追踪客户,读书笔记
    使用 CSS 追踪用户 2018/01/20 · CSS · 1评论 ·追踪 原文出处:jbtronics   译文出处:枫上雾棋    除了使用 JS 追踪用户,现在有人提出了还可以使用 CSS 进行
  • pusle雷达动漫完结,推荐8款CSS3兑现的动态特效
    pusle雷达动漫完结,推荐8款CSS3兑现的动态特效
    CSS技巧:逐帧动漫抖动实施方案 2017/08/16 · CSS ·动画 原来的书文出处:坑坑洼洼实验室    我所在的前端共青团和少先队首要从事活动端的H5页面开荒,而
  • 跟随我在oracle学习php,HTML中form表单的用法
    跟随我在oracle学习php,HTML中form表单的用法
    表单元素之搭车系 2016/01/28 · HTML5 ·表单 原文出处:司徒正美(@司徒正美)    对于表单元素, 除了reset元素,只要有name与value都能提交 因为在我们印象
  • Codecademy为编程初学者新增HTML和CSS两门课程,可以
    Codecademy为编程初学者新增HTML和CSS两门课程,可以
    Codecademy为编制程序初读书人新添HTML和CSS两门学科 2012/04/03 · CSS · 来源:伯乐在线     ·CSS 葡萄牙语原来的文章:Mashable  编译:伯乐在线– 黄利民 乐