【CSS】ch(单位名称)

JavaScript0108

【CSS】ch(单位名称),第1张

ch应该是一个鲜为人知的计算单位。

ch是一个相对于数字0的大小。

1ch 就是数字 0 的宽度。

比如定义一个3ch的宽度,那么久只能装下3个0。

重复一次:1ch 等于一个 0 的 宽度!宽度!宽度!

注意,是0的宽度,和0的高度无关。

比如

可以看到,是一个正方形,因为ch只等于0的宽度。

ch还有另一个规则:

ch 是一个相对单位,所谓相对,意思是 ch 会根据当前容器的 ****font-size**** 变化而变化。

如果字体不是等宽字体,这时的ch看起来就不止是一个英文字母的宽度了。

比如

可以看到,16个小写L,并没有超出8ch。

同时,如果容器中的内容是中英文结合的话,用ch做长度单也不是那么好使。

上面用到的几个CSS属性,是用来控制如果内容超出容器,就用省略号显示超出的部分。 【CSS】省略号

ch一般很少用得上,因为使用规则可能稍微有点复杂,而且通常需要 js 配合使用。

一般都会用em来代替ch~

//参数,中文字符串

//返回值:拼音首字母串数组  

function makePy(str){  

if(typeof(str) != "string")  

throw new Error(-1,"函数makePy需要字符串类型参数!")  

var arrResult = new Array() //保存中间结果的数组  

for(var i=0,len=str.lengthi<leni++){  

//获得unicode码  

var ch = str.charAt(i)  

//检查该unicode码是否在处理范围之内,在则返回该码对映汉字的拼音首字母,不在则调用其它函数处理  

arrResult.push(checkCh(ch))  

}  

//处理arrResult,返回所有可能的拼音首字母串数组  

return mkRslt(arrResult)  

}  

function checkCh(ch){  

var uni = ch.charCodeAt(0)  

//如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数  

if(uni > 40869 || uni < 19968)  

return ch //dealWithOthers(ch)  

//检查是否是多音字,是按多音字处理,不是就直接在strChineseFirstPY字符串中找对应的首字母  

return (oMultiDiff[uni]?oMultiDiff[uni]:(strChineseFirstPY.charAt(uni-19968)))  

}  

function mkRslt(arr){  

var arrRslt = [""]  

for(var i=0,len=arr.lengthi<leni++){  

var str = arr[i]  

var strlen = str.length  

if(strlen == 1){  

for(var k=0k<arrRslt.lengthk++){  

arrRslt[k] += str  

}  

}else{  

var tmpArr = arrRslt.slice(0)  

arrRslt = []  

for(k=0k<strlenk++){  

//复制一个相同的arrRslt  

var tmp = tmpArr.slice(0)  

//把当前字符str[k]添加到每个元素末尾  

for(var j=0j<tmp.lengthj++){  

tmp[j] += str.charAt(k)  

}  

//把复制并修改后的数组连接到arrRslt上  

arrRslt = arrRslt.concat(tmp)  

}  

}  

}  

return arrRslt  

}  

//两端去空格函数  

String.prototype.trim = function() {    return this.replace(/(^\s*)|(\s*$)/g,"") }  

  

//查看拼音首字母缩写  

function query(){  

    var str = document.getElementById("txtChinese").value.trim()  

    if(str == "") return  

    var arrRslt = makePy(str)  

    alert(arrRslt)