Experience10  Creative, Develop, UX, Wireframe, Productivity

#HTML5

HTML5 Boilerplate 技巧

除了使用HTML5 Boilerplate作为项目的默认模板。同时在这组模板中提供了些有用的技巧来帮助我们更方便的开发。

CSS:visuallyhidden

在默认的style.css中,提供了一个visuallyhidden的class,用于帮助我们将一个元素在视觉上完全隐藏不可见,不会让它对其它元素造成任何视觉渲染上的影响。但逻辑树上继续存在。

CSS:clearfix

这个就不用多说了帮助我们进行float clear操作

CSS:no-js

在默认情况下html标记中标识了class=”no-js”,这行在最终执行时,如果被Moderinizer检测到浏览器支持JS,便会替换掉。因此对于没有JS的支持下,我们可以在CSS中,针对这个class进行一些特殊的样式处理。如.no-js h1 {display:none;} ,在没有jS支持的情况下,所有的h1都将隐藏。

而进一步需要了解的是,在no-js被Moderinizer检测的时候,还会被替换成其它语法,如如果用户使用桌面上的IE浏览器,这里会被替换为class=”js no-flexbox canvas canvastext no-touch”等一系列class,表示了此浏览器所支持的部分特性,我们可以根据浏览器的特性来作相应的css或脚本编写。

jQuery CDN加载

在HTML之中,默认编写了从CDN加载jQuery的标签。但是同时可见如下代码

<script type="text/javascript">// <![CDATA[
window.jQuery || document.write("<script src='js/libs/jquery-1.5.1.min.js'>\x3C/script>")
// ]]></script>

这句脚本保证了如果从CDN加载失败,再从本地的服务器上加载jQuery库

November 11th, 2011 at 2:34 pm by . 0 Comments
filed under HTML5

HTML5 Boilerplate 开发模板

什么是HTML5 Boilerplate?

HTML 5 Boilerplate 是一个由业界众多大拿发起的一个开源开发模板,来帮助大家快速使用HTML5技术开发网站,同时兼容老式浏览。HTML5 Boilerplate并不是一套框架,他仅仅是一套模板。大家可以把他当作自己的新项目模板,在此基础上建立自己的项目。

如何什么HTML5 Boilerplate?

HTML5 Boilerplate志在建立一套简单的模板帮助大家快速的进行开发,一般来说下载了这套模板后,便可以在其上进行修改,但以下一些内容会有助于帮助你理解如何更规范的使用这套模板:

  • HTML
    • index.html中已经内置了Google Analytics的分析代码,你只需要替换其中的analytics ID为你自己注册的网站ID即可
  • CSS
    • 建议你的所有网站CSS放在style.css之中,并置于标有’Primary Styles’的注释之后
  • JS
    • plugins.js
      • 此文件的目的用于提高Javascript脚本文件的加载速度。相对于原来使用链接将多个文件加载到HTML文件中而言,建议将其它的所有Javascript的插件的minified代码粘贴到这个文件之中。可参见这里的FAQ
    • script.js
      • 同上面的js一样,所有的你自己的网站脚本应该放置在这个文件之中,当然这并不是适合大型项目开发的解决方案,作为小型项目和原型而言 ,可以把你的脚本写在这个文件之中
  • 服务器端配置
    • 模板中已经准备好了一些用于服务器端配置的配置文件,如.htaccess, web.config, nginx.conf & mime.types, lighttpd.conf等文件,你只需要在上面做相庆的定制即可
  • 其它
    • 你可能需要将模板目录下的各个favicon文件换成自己的图片
    • 还有针对iOS的apple-touch-icon.png图标
    • 默认提供了一个404.html
    • 如果有一些页面你不想被搜索引擎找到,就将其添加到robots.txt之中
    • 另一篇有用的文章, Getting Started Using HTML5 BOilerplate

November 11th, 2011 at 11:05 am by . 0 Comments
filed under HTML5

控件化HTML结构 Part 1

很长时间没有写过总结或技术贴了。最近时不时的在做一些原型,想把自己的经验记录一下。

Web Application大行其道。Silverlight和Flash始终无法赶上Web应用的脚步,不少框架和库,如jQuery,EXT都有着非常漂亮的设计思路来帮助大家快速开发Web应用,有的甚至不需要写一行HTML代码就能够搭建Web应用。在Web应用普及的今天,HTML该如何才能更好的应对越来越快速的开发呢?其实一些在RIA中的设计思想可以为现在的Web开发建立一些良好的指导与规范。

从这个例子开始。一个Button结构我们一般会怎做?大部分会是这个样子:

<div class=”simpleBtn”>Click Me</div>

然后我们会有可能数行的CSS代码来描述这个按钮的样式,这样做可以吗?当然。但是在结构化的HTML及Web应用的今天,太过具体的设计造成未来无法复用。如果这个按钮要求有纯文字,另一个按钮要求有图标。是不是得分别处理二个呢?

我简化了一个Silverlight中的按钮控件来看看他是怎么做:

<Button>
	<Grid>
		<Border>
			<Border x:Name="BackgroundAnimation"/>
			<Rectangle x:Name="BackGroundGradient">
				<LinearGradientBrush />
			</Rectangle>
		</Border>
		<Content Presenter/>
		<Rectangle x:Name="DisabledVisualElement"/>
		<Rectangle x:Name="FocusVisualElement"/>
	</Grid>
</Button>

在大部分RIA框架中,控件的设计思想就是为了复用与继承。比如这个Button控件,最终展示的内容,由Content Presenter这个对象来决定。他是文字或是图片,与按钮本身无关,按钮本身的目标就是把这个内容展示出来而已。而有关按钮的样式,由另一个对象组叫Border来决定。这样内容与样式也有对象上的分离。而其它二个Rectangle分别命名为DisabledVisualElement和FocusVisualElement大家一看也能明白,就是Disable和Focus的样式。也与内容本身有了分离,方便未来在不同的状态下调用。那么最终应用时可能会是这个样子:

<button Content="Click Me" Border="2" Background="Silver"/>

可以注意到。其实在这里的Border及Background有点像我们的CSS行间样式。在以前的CSS实践中,我们不太推荐使用行间样式,但是换回一些RIA的开发思路来看,无论是行间还是可复用的样式,都是比较通用的做法。没有人能写出绝对完美的,无垃圾代码的应用,按需使用就好。

那么,现在看看如何应用这种设计模式,来设计一个HTML/CSS的按钮呢?

<div class="C-SimpleButton" style="width:200px;height:50px;">
	<div class="C-Grid">
    	<div class="background"/>
        </div>
         <div class="C-ContentPresenter">Click Me</div>
    </div>
</div>

一个模仿Silverlight Button的HTML结构,其中Style中指定了一个行间样式让这个按钮在画面中有个默认大小。CSS样式我就不贴了,通过这个结构也能看出未来将如何来定义这个样式。

当然,我们没有办法像Silverlight一样用一个<Button/>就顺利的应用这个控件(方法也有,就是封装成JS)。但这样的规范当我们有效的建立之后,我们只需要关心将什么内容放入到<div class=”C-ContentPresentor”>节点。里面可以是一个文字,甚至可以是另一个控件。当我们的控件积累到一定量的时候,我们在搭建一个Web应用的方式,如同搭积木一样互相嵌套。控件的可读性更强,由于语义化了这个元素的结构,也使得这个控件更容易被JS来控制。

有人会问,这样做是不是在牺牲性能换语义结构?的确有这样的可能性,但是现在的在浏览器已经发展到了更高级的版本。每一年的新版本在性能上比上一代都有近50%甚至200%的提升,这种HTML结构上的解析运算量还不足以影响浏览器的性能。

其实语义化HTML结构并不新鲜,如果有兴趣,可以多翻看一下Gmail或是其它Web应用的源代码,几乎已经嵌套到了上百级的DIV结构。其目的只有一个,更有效,更快速的构建Web应用。

August 18th, 2010 at 10:55 am by . 0 Comments
filed under Front End, HTML5

是干什么用的?

为了了解aside元素是干什么用的,先来了解一下官方的定义

The aside element represents a section of a page that consists of content that is tangentially related to the content around the aside element, and which could be considered separate from that content. Such sections are often represented as sidebars in printed typography.

非常绕口的解释,但大意是指aside元素是独立的内容,但与正文有一定的联系。举个例子,一段引用,或是一些注解,都可以用aside标签来处理。

示例一:注解(Pull-quote)

<article>
    <header>
        <h1>Lorem Ipsum Dolor Sit Amets</h1>
    </header>
    <p>Aliquam erat volutpat. Vestibulum eleifend pellentesque urna, at
    sodales est faucibus sit amet. Praesent in mi dui. <q>Aliquam sed
    bibendum nisl. Mauris pharetra enim sit amet ipsum dictum placerat. Sed
    lacinia pulvinar iaculis. Nam sit amet hendrerit purus.</q> Sed a urna
    laoreet lorem pulvinar fermentum. Aenean vel luctus libero. Ut tincidunt
    metus sagittis ante viverra feugiat.</p>
    <aside>
        <q>Mauris pharetra enim sit amet ipsum dictum placerat.</q>
    </aside>
    <p>Nulla quis lacus non quam luctus vestibulum. Pellentesque imperdiet
    risus gravida ante consectetur fermentum. Vivamus et est nec risus volutpat
    elementum. Ut faucibus, lectus consectetur volutpat dapibus, quam diam
    luctus enim, vitae mollis enim purus non ante.</p>
</article>

示例二:词汇表(Glossary)

<article>
    <header>
        <h1>Web Technologies</h1>
    </header>
    <p>Curabitur dignissim lorem a CSS diam posuere tempor. Nam hendrerit,
    eros vel condimentum tempor, ipsum justo cursus justo, quis vestibulum
    turpis turpis sit amet tellus. Quisque quis PHP magna eget ipsum faucibus
    bibendum at non diam. Sed sapien est, cursus ac ullamcorper id, egestas vel
    urna JavaScript. Nullam aliquam dolor vitae quam pharetra auctor.</p>
    <aside>
        <dl>
            <dt>CSS</dt>
            <dd>A set of standards for styling documents presented on the
            World Wide Web.</dd>
            <dt>PHP</dt>
            <dd>A server-side scripting language suited to dynamic HTML document
            generation for the web.</dd>
            <dt>JavaScript</dt>
            <dd>A client-side scripting language used for manipulating HTML documents
            within a browser.</dd>
        </dl>
    </aside>
</article>

参考文章:
Understanding aside

May 6th, 2010 at 8:56 am by . 0 Comments
filed under HTML5