鍍金池/ 問答/ HTML問答
黑與白 回答

以下是自己對(duì)CSS 文本框,行內(nèi)框,行框,vertical-align的理解終結(jié)

line-height屬性,也就是行高,指定了塊級(jí)元素內(nèi)的/內(nèi)聯(lián)元素內(nèi)單行文本渲染時(shí)的行內(nèi)框(inline-box,內(nèi)聯(lián)盒)的高度,一個(gè)塊內(nèi)可以有多個(gè)內(nèi)聯(lián)文本元素或匿名元素,它們可以有各自的line-height屬性,一行中的多個(gè)行內(nèi)框共同決定了行框(line-box)的高度-最高行內(nèi)框的頂部和最低行內(nèi)框的底部之間的距離就是行框(line-box)的高度,也就是我們看到的一行元素占據(jù)的高度。而這個(gè)行框(line-box)決定了多行文本之間在垂直方向的排列方式-下一行的行框(line-box)的頂部和上一行的行框(line-box)的底部貼緊。
文本按設(shè)置的font-size以及font-family屬性構(gòu)成一個(gè)文本框(text-box),默認(rèn)情況下這個(gè)文本框(text-box)的高度和設(shè)置的font-size相同,但是在不同的瀏覽器下可能會(huì)有所不同:firefox下和設(shè)定的font-size相同,而chrome下會(huì)是font-size的1.4倍左右。行內(nèi)框(inline-box,內(nèi)聯(lián)盒)文本框(text-box)之間的高度差的1/2會(huì)被添加到文本框(text-box)的頭部和底部,添加的部分就叫做半行間距。
也就是說 行內(nèi)框(inline-box,內(nèi)聯(lián)盒) 是由文本框(text-box)半行間距共同構(gòu)成的。

通過圖示能更清楚些看到:
行內(nèi)框(inline-box,內(nèi)聯(lián)盒),文本框(text-box),行框(line-box)

那么行內(nèi)框(inline-box,內(nèi)聯(lián)盒)的上下位置又是通過什么決定的呢?
它就是vertical-align屬性-沒有繼承性,只對(duì)內(nèi)聯(lián)元素以及table-cell元素有效
vertical-align有不同的屬性,按參考線的不同可以分成3類:
1 相對(duì)baseline
baseline就是圖示中的藍(lán)色線條表示的,對(duì)于baseline的具體位置根據(jù)font-size以及font-family的不同而不同,基本上對(duì)應(yīng)字體及大小下,小寫字母x的底部就是baseline線的位置;對(duì)應(yīng)的屬性值有baseline(默認(rèn)),sub(baseline往下),super(baseline向上),百分比(baseline+行高的百分比),具體長(zhǎng)度值(baseline+指定長(zhǎng)度),middle(baseline向上1/2個(gè)x-height)。其中提到的x-height就是小寫字母x的高度,在CSS中有一個(gè)ex的長(zhǎng)度單位指的就是x-height,其具體值大約等于0.5em。

2 相對(duì)文本框(text-box)上下邊的
圖示中的綠色上下邊,對(duì)應(yīng)的屬性值有text-top,text-bottom

3 相對(duì)行內(nèi)框(inline-box,內(nèi)聯(lián)盒)上下邊的
圖示中的紅色上下邊,對(duì)應(yīng)的屬性值有top,bottom

同時(shí)要記住重要的一點(diǎn)在一個(gè)內(nèi)聯(lián)元素的所在的父元素(塊級(jí)元素)的開頭會(huì)添加一個(gè)寬度為0的匿名字符x,這個(gè)看不到的x字符做為以baseline為基準(zhǔn)的對(duì)齊方式的基準(zhǔn)

下面給出一些例子來看看對(duì)齊的效果以及對(duì)最終行框(line-box)高度的影響

例子1:

vertical-align:text-top; 
line-height: 72px; 
font-size: 36px;
.div-line{
    line-height: 72px;
    font-size: 36px;
}
.span-line-0{
    background-color: #F74A81;
    font-size: 36px;
    vertical-align: text-top;
}

    <div class="div-line" style="margin-top: 10px;">x
        <span class="span-line-0">00X00</span>
        <span class="span-line-0">abcdefhijklmn</span>
        <span class="span-line-0">opqrstuvwxyz</span>
    </div>

圖片描述
圖片描述

最終div的高度是90px:灰色區(qū)為行內(nèi)框(inline-box,內(nèi)聯(lián)盒),div構(gòu)成一個(gè)行框(line-box),紅色虛線以及紅色背景的文字構(gòu)成文本框(text-box),.span-line-0的vertical-align對(duì)齊方式為text-top,那么就和紅色虛線的文本框的頂部對(duì)齊,紅色虛線的行內(nèi)框的半行間距為(72-36)/2=18px,那么按行框構(gòu)成的規(guī)則,整個(gè)行框的高度值為72+18=90px;

例子2:

vertical-align:base-line; 
line-height: 72px; 
font-size: 36px;
        .div-line{
            line-height: 72px;
            font-size: 36px;
        }
        .span-line-0{
            background-color: #F74A81;
            font-size: 36px;
        }

        .span-line-1{
            background-color: #F74A81;
            font-size: 20px;
        }
        .span-line-2{
            background-color: greenyellow;
            font-size: 40px;
        }
        
    <div class="div-line">
        <span class="span-line-0">00X00</span>
        <span class="span-line-1">abcdefhijklmnopqrstuvwxyz</span>
        <span class="span-line-2">abcdefhijklmnopqrstuvwxyz</span>
    </div>

圖片描述
圖片描述
共有3塊行內(nèi)框(inline-box,內(nèi)聯(lián)盒),對(duì)齊方式為默認(rèn)的baseline,要確定baseline的集體位置才能計(jì)算出各個(gè)內(nèi)聯(lián)盒的相對(duì)位置,下面提供一個(gè)算法,僅供參考:

middle=baseline+0.5*x-height;
x-height=0.5em=0.5*front-size;
=>
middle=baseline+0.25*front-size;
=>
baseline=middle-0.25*front-size;

先middle對(duì)齊

匿名字符x行內(nèi)框的baseline位置為middle點(diǎn)往下9px;
第1個(gè)行內(nèi)框的(00X00)baseline位置為middle點(diǎn)往下9px;
第2個(gè)行內(nèi)框的(abcdefhijklmnopqrstuvwxyz)位置為middle點(diǎn)往下5px;
第3個(gè)行內(nèi)框的(abcdefhijklmnopqrstuvwxyz)位置為middle點(diǎn)往下10px;

接著以匿名字符x的baseline線對(duì)齊,
第1個(gè)行內(nèi)框的不動(dòng)
第2個(gè)行內(nèi)框的向下調(diào)整移動(dòng)4px
第3個(gè)行內(nèi)框的向上調(diào)整移動(dòng)1px

第2個(gè)行內(nèi)框最低
第3個(gè)行內(nèi)框最高

最終相比設(shè)定line-height,高出5px,最終的行框高度為72+5=77px;
如果將第1個(gè)行內(nèi)框的(00X00)的font-size位置為18px,按上面的算法最終的行框高度為72+5.5=77.5px;

啰里啰嗦說了那么多,希望對(duì)你有幫助......

以上內(nèi)容參考了Vertical-Align: All You Need To Know

旖襯 回答

為什么不直接vue.$data.content = res.d,根據(jù)res.d來渲染呢?

雅痞 回答

1個(gè)swiper-slide也是可以滑動(dòng)的。此處的關(guān)鍵在于。內(nèi)容是通過接口獲取到的,swiper沒有預(yù)先預(yù)留高度,沒有高度自然無法滑動(dòng)。此處解決辦法有兩種。
一、
swiper有個(gè)update()方法,等內(nèi)容更新完畢再計(jì)算寬高,可以實(shí)現(xiàn)。(此處要用到Angular里面子組件調(diào)用父組件的方法。)如圖:
clipboard.png

clipboard.png
二、
Angular里面可以直接這樣寫,就不需要swiper調(diào)用update()了。

clipboard.png
值得注意的是,此處div要先定義樣式。

clipboard.png

笑忘初 回答
按照以上的結(jié)構(gòu),我在刪除一個(gè)行為的時(shí)候該如何去查找它對(duì)應(yīng)的連線呢?或者有沒有別的更優(yōu)的做法?

又不一定要通過 DOM 結(jié)構(gòu)去找。 js 在構(gòu)造這些 svg 節(jié)點(diǎn)時(shí),可能在數(shù)據(jù)層面保存了它們的引用的。

另外,這個(gè)系統(tǒng),有對(duì)外提供服務(wù)?

不討喜 回答

...arr 改成 [].slice.call(arr)

下墜 回答

寫的很明白,把src交給webpack來處理.
html不能識(shí)別webpack中的別名
轉(zhuǎn)換成require,不但可以方便書寫路徑,還能避免相對(duì)路徑在打包后錯(cuò)誤的情況
這些被require的文件還會(huì)經(jīng)過各自的loader處理,例如小圖片轉(zhuǎn)base64

款爺 回答

你可以把不同域名的接口歸類,然后生成不同的baseaxios
或者請(qǐng)求的時(shí)候直接寫絕對(duì)路徑,default baseurl就會(huì)失效

安于心 回答

從這報(bào)錯(cuò)來看應(yīng)該是你在res.send()或者其它方法,已經(jīng)發(fā)送了返回請(qǐng)求后,又發(fā)送了一遍返回請(qǐng)求。
既然你覺得改了PLAN_SHZT這方面的問題,可以檢查下邏輯,看看是否因?yàn)檫@個(gè)問題導(dǎo)致發(fā)生了多次的res響應(yīng)。

情皺 回答

根據(jù)你的描述兩者應(yīng)該沒有什么聯(lián)系,可能問題出在vue的生命周期上,你可以檢查一下代碼

替身 回答

inc()方法中修改如下:
this.$set(this.position, 0, (this.position[0] + 1))

原因是數(shù)組未更新導(dǎo)致,請(qǐng)查看vue相關(guān)文檔:https://cn.vuejs.org/v2/guide...

絯孑氣 回答

你應(yīng)該是有值就解開b,而不是a失去焦點(diǎn)在解開b,change改成input事件

     $('#box').on('input','#a',function () {
            if($(this).val()){
                $('#b').removeAttr('disabled');
            }else{
                $('#b').attr('disabled','disabled');
            }
        });
嘟尛嘴 回答

iframe里應(yīng)該是一個(gè)表單提交,可以用ajax發(fā)起這個(gè)支付請(qǐng)求,支付成功后后端可以返回狀態(tài)吧,拿到狀態(tài)后在ifram里調(diào)用一個(gè)全局js方法,讓app攔截這個(gè)方法,然后打開指定app頁面。

愛礙唉 回答

axios本身就是基于promise的,你在一個(gè)then 中return 一個(gè)result后,只會(huì)讓下一個(gè)then接收到這個(gè),而并不是讓這個(gè)方法返回result,通常的做法是提交commit()存在state中。

夢(mèng)囈 回答

你新建一個(gè)工程打包下是否成功,如果不成功是你環(huán)境的問題。
也有可能是cordova ionic沒有安裝成功,我以前安裝成功都需要科學(xué)上網(wǎng)的。

櫻花霓 回答

可以用正則表達(dá)式解決,你可以看一下這個(gè):
http://www.cnblogs.com/fishtr...

初心 回答

webpack 可以項(xiàng)目安裝,避免版本依賴發(fā)生變化引起報(bào)錯(cuò),這樣老版本程序沒有時(shí)間和精力升級(jí)時(shí)就一直用老版本。正在開發(fā)的程序還是都升級(jí)的比較新的穩(wěn)定版比較好。

墨小羽 回答

首先,你給所有的彈出框綁定一個(gè)ref的屬性,ref="popover",然后通過this.$refs[名字].value = false就可以關(guān)閉彈出層了,你可以給所有彈出層綁定一個(gè)show事件,就是任意一個(gè)顯示,所有其他的ref的value就賦值成false。