成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

移動(dòng)端字體大小調(diào)節(jié)器實(shí)現(xiàn)

cpupro / 1940人閱讀

摘要:最近在一個(gè)微信項(xiàng)目中需要用到字體大小調(diào)節(jié)器,就看了一下中的功能,就做了一個(gè)相似的,方法也不止一種,而且都不難。第三點(diǎn)在我目前的項(xiàng)目中,在微信瀏覽器是不需要考慮的。

最近在一個(gè)微信H5項(xiàng)目中需要用到字體大小調(diào)節(jié)器,就看了一下QQ中的功能,就做了一個(gè)相似的,方法也不止一種,而且都不難。

方法1 html
圣誕已過(guò)
再加上看過(guò)各個(gè)大牌出的辣眼睛狗年限定以后
我以為未來(lái)的幾個(gè)月應(yīng)該是沒(méi)有什么東西
能騙到我的錢(qián)了
直到...看到了ysl的春季限定...
我知道
錢(qián)包又要完。蛋 。了。
style

我們得到這樣的頁(yè)面:

javascript

最簡(jiǎn)單的單擊目標(biāo)點(diǎn)可以設(shè)置對(duì)應(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]}`)
    }
})

效果:

方法2

emmmmm,后來(lái)隱約記得有個(gè)元素可以充當(dāng)這個(gè)來(lái)調(diào)節(jié)器來(lái)用,是它,是它,就是它:input 。input 中有一個(gè)屬性 type="range" ,使用它可以更方便的完成上述功能。

html

這里還是保留了上面的部分代碼(5個(gè)定位點(diǎn)和1條橫線),因?yàn)?input 是沒(méi)有這些點(diǎn)的,橫線可以通過(guò)更改默認(rèn)滑軌的樣式成為一條細(xì)線,但是當(dāng)滑塊在兩端時(shí),橫線的頂點(diǎn)并不在滑塊中央,不介意的話問(wèn)題也不大。

如下的透視圖展示的就是頂點(diǎn)在滑塊正中央:

style
javascript

這里的 js 部分就很簡(jiǎn)單了,簡(jiǎn)直是送分題:

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)起來(lái)看起來(lái)都挺簡(jiǎn)單,但是綜合考慮還是第二種方法優(yōu)先,我考慮的方面主要有三點(diǎn):

當(dāng)各字體的5個(gè)標(biāo)記點(diǎn)不是一條豎線,而是一個(gè)圓或者其他形狀的時(shí)候,我們需要計(jì)算圓的中心點(diǎn),而眾所周知移動(dòng)端我們可能會(huì)用 rem 或者其他單位,這時(shí)候計(jì)算起來(lái)比較棘手了;

在 touchmove 事件中處理了很多計(jì)算問(wèn)題,比較消耗資源,有可能會(huì)造成用戶體驗(yàn)不佳;

touchmove 事件的兼容性,Safari 暫不支持,有可能會(huì)造成困擾。

第三點(diǎn)在我目前的項(xiàng)目中,在微信瀏覽器是不需要考慮的。

該文章首發(fā)于https://blog.bingqichen.me/。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/52093.html

相關(guān)文章

  • 移動(dòng)字體大小調(diào)節(jié)器實(shí)現(xiàn)

    摘要:最近在一個(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=...

    lastSeries 評(píng)論0 收藏0
  • 簡(jiǎn)單粗暴的移動(dòng)頁(yè)面開(kāi)發(fā)技能

    摘要:移動(dòng)端響應(yīng)式頁(yè)面開(kāi)發(fā)說(shuō)簡(jiǎn)單也簡(jiǎn)單,根據(jù)屏幕尺寸調(diào)節(jié)根字體大小。大寬度用,高度和小寬度全部使用,簡(jiǎn)單粗暴。之前閱讀過(guò)大漠老師的使用實(shí)現(xiàn)手淘頁(yè)面的終端適配介紹了手淘項(xiàng)目的制作規(guī)范。 移動(dòng)端響應(yīng)式頁(yè)面開(kāi)發(fā)說(shuō)簡(jiǎn)單也簡(jiǎn)單,根據(jù)屏幕尺寸調(diào)節(jié)根字體大小。 大寬度用%,高度和小寬度全部使用rem,簡(jiǎn)單粗暴。 之前閱讀過(guò)大漠老師的使用Flexible實(shí)現(xiàn)手淘H5頁(yè)面的終端適配,介紹了手淘項(xiàng)目的H5制作規(guī)...

    jeffrey_up 評(píng)論0 收藏0
  • 簡(jiǎn)單粗暴的移動(dòng)頁(yè)面開(kāi)發(fā)技能

    摘要:移動(dòng)端響應(yīng)式頁(yè)面開(kāi)發(fā)說(shuō)簡(jiǎn)單也簡(jiǎn)單,根據(jù)屏幕尺寸調(diào)節(jié)根字體大小。大寬度用,高度和小寬度全部使用,簡(jiǎn)單粗暴。之前閱讀過(guò)大漠老師的使用實(shí)現(xiàn)手淘頁(yè)面的終端適配介紹了手淘項(xiàng)目的制作規(guī)范。 移動(dòng)端響應(yīng)式頁(yè)面開(kāi)發(fā)說(shuō)簡(jiǎn)單也簡(jiǎn)單,根據(jù)屏幕尺寸調(diào)節(jié)根字體大小。 大寬度用%,高度和小寬度全部使用rem,簡(jiǎn)單粗暴。 之前閱讀過(guò)大漠老師的使用Flexible實(shí)現(xiàn)手淘H5頁(yè)面的終端適配,介紹了手淘項(xiàng)目的H5制作規(guī)...

    Gilbertat 評(píng)論0 收藏0
  • Web網(wǎng)頁(yè)布局的主要方式

    摘要:改變屏幕分辨率可以切換不同的靜態(tài)局部頁(yè)面元素位置發(fā)生改變,但在每個(gè)靜態(tài)布局中,頁(yè)面元素不隨窗口大小的調(diào)整發(fā)生變化。即創(chuàng)建多個(gè)流體式布局,分別對(duì)應(yīng)一個(gè)屏幕分辨率范圍。 一、靜態(tài)布局(static layout)   即傳統(tǒng)Web設(shè)計(jì),網(wǎng)頁(yè)上的所有元素的尺寸一律使用px作為單位。 1、布局特點(diǎn)   不管瀏覽器尺寸具體是多少,網(wǎng)頁(yè)布局始終按照最初寫(xiě)代碼時(shí)的布局來(lái)顯示。常規(guī)的pc的網(wǎng)站都是靜態(tài)...

    blastz 評(píng)論0 收藏0
  • Web網(wǎng)頁(yè)布局的主要方式

    摘要:改變屏幕分辨率可以切換不同的靜態(tài)局部頁(yè)面元素位置發(fā)生改變,但在每個(gè)靜態(tài)布局中,頁(yè)面元素不隨窗口大小的調(diào)整發(fā)生變化。即創(chuàng)建多個(gè)流體式布局,分別對(duì)應(yīng)一個(gè)屏幕分辨率范圍。 一、靜態(tài)布局(static layout)   即傳統(tǒng)Web設(shè)計(jì),網(wǎng)頁(yè)上的所有元素的尺寸一律使用px作為單位。 1、布局特點(diǎn)   不管瀏覽器尺寸具體是多少,網(wǎng)頁(yè)布局始終按照最初寫(xiě)代碼時(shí)的布局來(lái)顯示。常規(guī)的pc的網(wǎng)站都是靜態(tài)...

    shiina 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<