文章分类: 前端开发

Javascript,CSS3,HTML5…各种前端开发话题归档

英文单词断行问题:CSS中word-break、word-wrap以及hyphens的兼容性和区别

CSS中一提到单词断行,最先映入脑海的肯定是word-break和word-wrap这两条属性。但对于这两条属性到底有什么区别,兼容性如何,我一直都概念模糊。今天抽空把它们以及CSS3中新加入的断行属性之间的区别和作用理理清楚,做一下笔记。

在英文段落中有时会碰到一些很长的单词,这些单词的长度超出容器宽度。在默认的页面文档中,如果单词长度超出了单行,会被自动移到下一行中,图中puzzling!就被自动换行了;而如果单词本身的长度已经超出容器宽度,常规的文档对此就没有约束力了,图中dddddd…这个单词就这么溢出了 查看详细 »

在IIS服务器上部署svg/woff/woff2字体

标题起的比较诡异,部署网站的字体和服务器IIS有什么关系?如果你的职责只限于一名前端开发,那么你可能很“幸福”地与这些问题擦肩而过,浑然不觉。可是本人一直都是孤军奋战,连开发环境都要自己搭建,这次又踩了新的坑,发现网站所用的woff、svg等字体压根就没被页面加载。反复排摸都不得其解,用浏览器访问服务器上的这些字体url,全都报404错误,只有ttf的字体能被访问到…

事情还得起源于Google被墙这事,在几个月前我改用了360提供的字体库,一直也运行稳定。今天发现360的字体库失效了,网站字体又变回系统字体,而且一直在尝试加载360的字体库,页面变得很慢,和当初加载不到Google字库的时候一个德性…看来没有永远靠得住的服务啊,要想用字体,还得靠自己… 查看详细 »

谷歌(Google)被墙,解决地图和字体无法显示的问题

首先,本文以及本站所有文章都是技术探讨文章,不鼓励任何人去fan qiang以及做任何违法的事情。接下来是正文:

谷歌基本上是被和谐透了,谷歌地图API自然也打不开了,于是公司网站上那些谷歌地图都变成空白了…总不能让访客都自己fan qiang吧。纠结了一阵子才知道原来谷歌地图的服务并没有完全被屏蔽,只是我们以前访问的域名maps.google.com访问不了了。
这个域名的谷歌地图还是能正常访问的:http://ditu.google.cn
那么把原来的JS引用地址maps.googleapis.com替换成ditu.google.cn就解决了。

1
<script>http://ditu.google.cn/maps/api/js?v=3&key=xxxxxxx&sensor=false</script>

接下来是谷歌字体问题, 查看详细 »

阿拉伯语网站的CSS要点总结

阿拉伯语不同于其他文字,是从右向左读的,文字要向右对齐,在CSS中右对齐的属性有两条:

1
2
text-align:right;
direction: rtl;

text-align很常见,也就是简单的右对齐属性。direction就不那么常见了。
CSS手册中对direction属性是这样描述的:该属性指定了块的基本书写方向,以及针对 Unicode 双向算法的嵌入和覆盖方向。
也就是说定义了direction:rtl的元素,文字的书写方向是从右至左。另外direction还有控制text-align默认值的作用,定义过direction:rtl的元素,如果没有预先定义过text-align,那么这个元素的text-align的值就变成了“right” 查看详细 »

响应式布局CSS3 Media Queries中屏幕分辨率顺序写法比较

CSS3的Media Queries(媒体查询)在现在的网站开发中已经被应用得越来越频繁,现在但凡开发新的网站,只要不是布局超复杂的项目,不免都要“顺手”做一些响应式布局,尽量以低成本兼容更多的浏览器/设备。现代的移动设备尺寸多样,对于CSS的兼容问题也层出不穷,本文主要探讨Media Queries的分辨顺序问题。从粗略的概念视角开始,不涉及具体的技术细节。 查看详细 »

原生Javascript拖放程序

自己造轮子写个原生拖放,要做到简单调用,考虑拖放对象所在的环境,还要兼容老IE,还是挺锻炼人的。
主要碰到几个问题:

  1. 关于冒泡和阻止默认事件,以前的理解都很粗略,自己写的时候才知要细分。
    一是要阻止事件传递,即事件冒泡,老IE里是ev.cancelBubble=true,其他浏览器是ev.stopPropagation(),要在onmousedown的时候就定义好;
    然后是阻止默认事件,主要是为了防止图片无法拖动的问题,要在onmousemove的时候,老IE里是ev.returnValue=false; 其他浏览器ev.preventDefault()
  2. 拖动过程中鼠标移出物件,就要把事件方法在document上复制一遍:document.onmousemove=_self.onmousemove; 并且考虑到拖放结束的时候鼠标可能是在任意位置,那就干脆把onmouseup方法写在document上
  3. 单纯的拖放物件其实没什么用,实际应用的时候肯定会给拖放增加范围,比如自制的滚动条,幻灯效果等。所以给拖放对象的父级元素作边界。于是又重温了各种位置取值的兼容问题,getBoundingClientRect()是一个很有用的函数,不过在老IE里面取不到宽高,所以要自己计算一下。

查看详细 »

EDM制作兼容经验谈

尽管都是用HTML语言,EDM和网页的制作差别还是随着现代电脑/手机等设备的升级,不断地分化着。可以说EDM是保守的极端,应该完全避免新技术(比如CSS3新属性,HTML5的新元素等)的应用。

总结几条EDM制作最基本的要点:

  • 不能用div布局,更不能用浮动。所有关于布局都用老旧的方法 – table实现,如果有需要可以大表套小表,不过层级还是尽量精简;
  • 不能用百分比来布局,每一个单元格(td)都要用固定宽度,必要时也固定高度。页面内容区宽度推荐600px;
  • 除了图片可以外连,其他一切,包括CSS都不能外链,更禁用iframe这样的页面嵌套;
  • CSS要完全嵌入html元素中,不能写在页头,当然更不能外链。完全不用CSS3的新属性;
  • CSS2中应该禁用的常用属性有float,clear,position,top/left/right/bottom,overflow,z-index 等等…
  • 完全禁用任何形式的Javascript和其他脚本
  • HTML中应该禁用的,除了所有的HTML5新元素外,还有marquee,object,iframe,所有的表单元素和页头元素

查看详细 »

响应式网站项目中的CSS兼容性速记几条

CSS3中的calc变量在iOS6浏览器中必须加-webkit-前缀,目前的FF浏览器已经无需-moz-前缀。
Android浏览器目前仍然不支持calc,所以要在之前增加一个保守尺寸:

1
2
3
4
5
div { 
	width: 95%; 
	width: -webkit-calc(100% - 50px); 
	width: calc(100% - 50px); 
}

查看详细 »

Google Map API3地图页面开发笔记

今年年初Google Map就向所有采用API2开发的网站发了通知函,说5月份会停止API2,今后所有的Gmap项目都要基于API3开发,并且建议把API2项目都升级到API3。我公司网站上有一个Gmap的页面,通过读取一个feed实现所有酒店位置的显示,这是页面地址 – http://www.vhr.com/hotels.aspx。 由于太忙,一直都没时间去给这个地图做升级,等到11月,突然发现这个基于API2开发的地图不能用了,而且由于Google关闭了引用的JS,导致连调试都不能了,不得不去研究API3的文档,重新开发了。API2到API3的升级不是简单的几个函数和方法替换的事儿,API3的语法比起API2来显得更加的面向对象,还是整理思路重做吧… 查看详细 »