shidong.zhu的博客

基于drupal的前端学习小结

基于drupal框架做前端开发有一段时间了,和大多数人一样是一个从认识drupal到学习并熟悉drupal的一个过程。现在想来基于这个框架做网站开发是一件很方便和快速的方式,接下来就是我这段时间做前端开发的总结,也是对drupal从相识到相知的过程:

刚开始接触drupal的同学也许第一反应是:神马情况,网站被这东西搞得更复杂了,连个html标签都要仔细找好长时间。是的,在你还没接触drupal的情况下单纯前端的视角这种感觉是正常的。
首先是drupal的几个主要概念:区块,区域,视图,模块,节点,分类,内容类型等需要先去了解。这些概念组成的体系所带来的高效和快捷是drupal吸引这么多开发者的主要原因。我们主要还是从前端的视角来看drupal给我们带来哪些便捷和惊喜的地方。

html部分
首先针对一个基于drupal搭建的一个网站比如dminorstudio(公司网站),打开chrome浏览器的控制台,会看到<html>头信息和<head>里面的内容,当然里面会大量的引入的类js和css的文件,那么这些文件实在哪里被引入的呢?

WEBGL之three.js实现

上一期讲的是WebGL原理和应用--OpenGL实现3D渲染效果,这一次主要介绍Three.js是如何实现3D渲染效果的(Three代表3D):

three.js应用

(1)首先是Three.js里面主要的三个要素:场景,相机,渲染器。这也很好理解,就是在一个空间里实现3D效果的三个环节,了解了这个后面就很容易想象出模拟的过程。

2016-09-05 18:23:10屏幕截图.png

(2)接下来是渲染模型所要的几何体和材质,并添加到场景。

2016-09-05 18:23:27屏幕截图.png

WEBGL的初步认识和实践

提到WEBGL会知道他是实现3D渲染效果的,能够展现给我们许多很炫的视觉体验,但是这些3D的效果WEBGL是怎么一步步去实现的呢,下面会有答案:

什么是WEBGL:

WebGL是一种3D绘图标准,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,WebGL可以为HTML5 Canvas提供硬件3D加速渲染。WebGL 本质上是基于光栅化的 API ,而不是基于 3D 的 API。

优点:
第一,它通过HTML脚本本身实现Web交互式三维动画的制作,无需任何浏览器插件支持;
第二,它利用底层的图形硬件加速功能进行的图形渲染,是通过统一的、标准的、跨平台的OpenGL接口实现的。

WEBGL实现3D效果的原理:

渐进增强与优雅降级

       这里提到的“渐进增强”和“优雅降级”是处理浏览器兼容性的两种方法论,并还引发过激烈的辩论。虽然起初他们被看做可互换的概念,但本质上却完全相反。下面我们就谈论下关于这两个概念:

       优雅降级:指的是首要为现代浏览器提供最可观的效果,然后保证为某些老版本的浏览器提供基本可用的体验,即表现在现在浏览器中提供的新特性在老版本浏览器中会被降级,且一般会有一个达到基本体验的分界点,同时会声明不支持那些老掉牙的浏览器,类似于警告性语言并提出建议(如您的浏览器老的让人笑话,建议下载较新版本浏览器!);

       渐进增强:从不同层面上渐进增强与优雅降级是恰恰相反的概念,表现在渐进增强则是通过牢固的html框架实现基本浏览器的标准效果,然后用CSS样式和必要的JavaScript为较新版本的浏览器提供增强渐进的用户体验,也就是说渐进增强以恪守Web标准的标签为基础,意味着他在所有浏览器中均可用。

响应式Web设计(Responsive Web design)的优点和缺点

响应式Web设计指的是页面设计应当根据设备环境(系统平台、屏幕尺寸)进行相应的响应和调整,也就是说响应式Web设计是一种技术,可以使网站适应于任何设备。

关于浏览器兼容性的讨论(1)

浏览器兼容性也就是指针对不同的浏览器(IE,Firefox,Chrome...)显示效果可能不一致而产生浏览器和网页间的兼容问题。而目前并没有统一的工具能解决这一问题,对于前端开发人员来说浏览器的兼容性无疑是开发过程中不可逃避的也是很繁琐的步骤,那么当面对这样的问题时有哪些小技巧呢?

(1)不同浏览器对高度的识别。 所有浏览器通用:height: 100px;IE6专用:_height: 100px; *height: 100px;IE7专用:*+height: 100px;

(2)不同浏览器默认的内外边距不同。 针对这个问题,我们可以在样式表中设置*{padding:0;margin:0;},对内外边距清零来使得浏览器达到统一,这样就不会出现不同浏览器可能出现的内外边距导致的问题。

(3)Firefox下给div设置padding后会导致width和height相应的增加,但是IE不会。 这样的话就可以用!important来解决,因为ie6浏览器不识别!important属性,这样css可以设置width:100px !important;width: 120px;padding:0 10px;