摘要:最近在一個(gè)微信項(xiàng)目中需要用到字體大小調(diào)節(jié)器,就看了一下中的功能,就做了一個(gè)相似的,方法也不止一種,而且都不難。第三點(diǎn)在我目前的項(xiàng)目中,在微信瀏覽器是不需要考慮的。
最近在一個(gè)微信H5項(xiàng)目中需要用到字體大小調(diào)節(jié)器,就看了一下QQ中的功能,就做了一個(gè)相似的,方法也不止一種,而且都不難。
方法1 htmlstyle
圣誕已過
再加上看過各個(gè)大牌出的辣眼睛狗年限定以后
我以為未來的幾個(gè)月應(yīng)該是沒有什么東西
能騙到我的錢了
直到...看到了ysl的春季限定...
我知道
錢包又要完。蛋 。了。
我們得到這樣的頁面:
javascript最簡單的單擊目標(biāo)點(diǎn)可以設(shè)置對應(yīng)字體大小:
$(".font-adjust li").on("click", function(e) { $("article").attr("style", `font-size: ${$(this).attr("data-size")}`); // 設(shè)置字體大小 $(".font-adjust li").removeClass("selected"); $(this).addClass("selected"); })
在QQ的字體設(shè)置中,只要點(diǎn)擊起始點(diǎn)在調(diào)節(jié)區(qū)域,之后在整個(gè)窗口左右滑動(dòng)也可以達(dá)到調(diào)節(jié)字體的目的,我這里用的是 touchmove 事件,利用它返回的位置信息,判斷當(dāng)前距離哪個(gè)點(diǎn)的水平位置最近,就使用哪個(gè)字體大小,代碼如下:
var fontModel = ["14px", "16px", "18px", "20px", "22px"]; // 可供選擇的字體序列 var current = 0; // 當(dāng)前使用的字體在序列中的位置下標(biāo) var fontModelsPos = $(".font-adjust li").map(function (index) { // 獲得每個(gè)標(biāo)記點(diǎn)的位置 x return $(".font-adjust li").eq(index)[0].offsetLeft; }) $(".font-adjust").on("touchmove", function (e) { e.preventDefault(); var min = { i: 0, dis: Math.abs(fontModelsPos[0] - e.changedTouches[0].clientX) }; for(var i = 1; i < 5; i++){ // 獲得最近標(biāo)記點(diǎn) var dis = Math.abs(fontModelsPos[i] - e.changedTouches[0].clientX); // 計(jì)算觸控點(diǎn)和各標(biāo)記點(diǎn)的距離 if (dis < min.dis) { // 找出最近的那個(gè) min = { i: i, dis: dis } } } if (min.i != current) { // 字體大小改變 current = min.i; $(".font-adjust li").removeClass("selected"); $(".font-adjust li").eq(min.i).addClass("selected"); $("article").attr("style", `font-size: ${fontModel[min.i]}`) } })
效果:
方法2emmmmm,后來隱約記得有個(gè)元素可以充當(dāng)這個(gè)來調(diào)節(jié)器來用,是它,是它,就是它:input 。input 中有一個(gè)屬性 type="range" ,使用它可以更方便的完成上述功能。
html這里還是保留了上面的部分代碼(5個(gè)定位點(diǎn)和1條橫線),因?yàn)?input 是沒有這些點(diǎn)的,橫線可以通過更改默認(rèn)滑軌的樣式成為一條細(xì)線,但是當(dāng)滑塊在兩端時(shí),橫線的頂點(diǎn)并不在滑塊中央,不介意的話問題也不大。
如下的透視圖展示的就是頂點(diǎn)在滑塊正中央:
style javascript這里的 js 部分就很簡單了,簡直是送分題:
var fontModel = ["14px", "16px", "18px", "20px", "22px"]; var article = document.getElementById("article"); document.getElementById("adjust_font").addEventListener("input", function (e) { article.setAttribute("style", `font-size: ${fontModel[e.target.value]}`); }, false);總結(jié)
兩種方法實(shí)現(xiàn)起來看起來都挺簡單,但是綜合考慮還是第二種方法優(yōu)先,我考慮的方面主要有三點(diǎn):
當(dāng)各字體的5個(gè)標(biāo)記點(diǎn)不是一條豎線,而是一個(gè)圓或者其他形狀的時(shí)候,我們需要計(jì)算圓的中心點(diǎn),而眾所周知移動(dòng)端我們可能會(huì)用 rem 或者其他單位,這時(shí)候計(jì)算起來比較棘手了;
在 touchmove 事件中處理了很多計(jì)算問題,比較消耗資源,有可能會(huì)造成用戶體驗(yàn)不佳;
touchmove 事件的兼容性,Safari 暫不支持,有可能會(huì)造成困擾。
第三點(diǎn)在我目前的項(xiàng)目中,在微信瀏覽器是不需要考慮的。
該文章首發(fā)于https://blog.bingqichen.me/。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/52093.html
摘要:最近在一個(gè)微信項(xiàng)目中需要用到字體大小調(diào)節(jié)器,就看了一下中的功能,就做了一個(gè)相似的,方法也不止一種,而且都不難。第三點(diǎn)在我目前的項(xiàng)目中,在微信瀏覽器是不需要考慮的。 最近在一個(gè)微信H5項(xiàng)目中需要用到字體大小調(diào)節(jié)器,就看了一下QQ中的功能,就做了一個(gè)相似的,方法也不止一種,而且都不難。 showImg(https://segmentfault.com/img/bV7g5Y?w=750&h=...
摘要:移動(dòng)端響應(yīng)式頁面開發(fā)說簡單也簡單,根據(jù)屏幕尺寸調(diào)節(jié)根字體大小。大寬度用,高度和小寬度全部使用,簡單粗暴。之前閱讀過大漠老師的使用實(shí)現(xiàn)手淘頁面的終端適配介紹了手淘項(xiàng)目的制作規(guī)范。 移動(dòng)端響應(yīng)式頁面開發(fā)說簡單也簡單,根據(jù)屏幕尺寸調(diào)節(jié)根字體大小。 大寬度用%,高度和小寬度全部使用rem,簡單粗暴。 之前閱讀過大漠老師的使用Flexible實(shí)現(xiàn)手淘H5頁面的終端適配,介紹了手淘項(xiàng)目的H5制作規(guī)...
摘要:移動(dòng)端響應(yīng)式頁面開發(fā)說簡單也簡單,根據(jù)屏幕尺寸調(diào)節(jié)根字體大小。大寬度用,高度和小寬度全部使用,簡單粗暴。之前閱讀過大漠老師的使用實(shí)現(xiàn)手淘頁面的終端適配介紹了手淘項(xiàng)目的制作規(guī)范。 移動(dòng)端響應(yīng)式頁面開發(fā)說簡單也簡單,根據(jù)屏幕尺寸調(diào)節(jié)根字體大小。 大寬度用%,高度和小寬度全部使用rem,簡單粗暴。 之前閱讀過大漠老師的使用Flexible實(shí)現(xiàn)手淘H5頁面的終端適配,介紹了手淘項(xiàng)目的H5制作規(guī)...
摘要:改變屏幕分辨率可以切換不同的靜態(tài)局部頁面元素位置發(fā)生改變,但在每個(gè)靜態(tài)布局中,頁面元素不隨窗口大小的調(diào)整發(fā)生變化。即創(chuàng)建多個(gè)流體式布局,分別對應(yīng)一個(gè)屏幕分辨率范圍。 一、靜態(tài)布局(static layout) 即傳統(tǒng)Web設(shè)計(jì),網(wǎng)頁上的所有元素的尺寸一律使用px作為單位。 1、布局特點(diǎn) 不管瀏覽器尺寸具體是多少,網(wǎng)頁布局始終按照最初寫代碼時(shí)的布局來顯示。常規(guī)的pc的網(wǎng)站都是靜態(tài)...
摘要:改變屏幕分辨率可以切換不同的靜態(tài)局部頁面元素位置發(fā)生改變,但在每個(gè)靜態(tài)布局中,頁面元素不隨窗口大小的調(diào)整發(fā)生變化。即創(chuàng)建多個(gè)流體式布局,分別對應(yīng)一個(gè)屏幕分辨率范圍。 一、靜態(tài)布局(static layout) 即傳統(tǒng)Web設(shè)計(jì),網(wǎng)頁上的所有元素的尺寸一律使用px作為單位。 1、布局特點(diǎn) 不管瀏覽器尺寸具體是多少,網(wǎng)頁布局始終按照最初寫代碼時(shí)的布局來顯示。常規(guī)的pc的網(wǎng)站都是靜態(tài)...
閱讀 2731·2021-11-24 09:39
閱讀 1647·2021-09-28 09:35
閱讀 1119·2021-09-06 15:02
閱讀 1307·2021-07-25 21:37
閱讀 2726·2019-08-30 15:53
閱讀 3643·2019-08-30 14:07
閱讀 714·2019-08-30 11:07
閱讀 3512·2019-08-29 18:36