排版緊湊情況下IOS 瀏覽器的文字部分選中問題

2022-04-29 19:33:10 字數 1143 閱讀 3055

一、需求

乙個每一項都是**混排的列表頁,在需要對其中的某一部分文字進行選中copy的時候,ios個二貨每次都是直接選中了整個列表項,無論怎麼操作它的選框都沒有辦法做到部分選中。

這是我本週遇到遇到的最奇葩的問題,沒有之一。

二、思路

仔細思考並試驗之後,找到了三個解決方案:

(一)放開頁面的縮放限制,在使用者把頁面放大的情況下,文字選中會相對容易很多;

(二)把需要選中的文字放進input[text],然後用oninput遮蔽掉input的輸入;

(三)分析html/css研究下ios為啥總是傻傻分不清楚,只能整塊整塊的選中;

方案一,因為頁面是在webview中展現,允許縮放會和native的整體風格不協調,並且對使用者來說,互動門檻略高,選中效果也不是很理想,直接pass掉;

方案二,完美實現長按選中,部分複製。but,會不可避免的彈出系統的輸入法,產品經理以體驗太差直接斃掉,無奈,繼續研究方案三。

變換html結構、css定位,由簡到繁各種對照...過程之波折略掉一千字。

三、總結

ios的長按選擇功能,是有bug的。

在html節點太密集或者有元素浮動或者文字節點間距/行高太小的時候,長按出來的選框容易把這一坨都選上,而其中的細節它傻傻分不清楚;

so:1.外層容器與文字節點以及文字節點之間,間距或行高適當增大(以手指輕觸螢幕時的壓屏範圍為參照,14px差不多了);

2.外層父容器設定-webkit-user-select:text;其他無關子節點設定-webkit-user-select:none;

3.避免使用浮動;

4.外層容器避免設定行高,尤其是無單位數字取值的行高,如line-height:1;

5.避免多層巢狀;

6.容器多用絕對定位;

7.使用table布局,可以保持清晰的html結構,幫助ios識別;

8.如果是列表項,listbox設定overflow:hidden;

9.非需要選中部分盡量不要設定line-height;

結尾放一張成功之後的效果圖:

談談cookie在各瀏覽器下的共用情況

如果你對什麼是cookie 還不了解,則此篇文章不適合你看,如果你希望了解一下,則請先了解什麼是cookie 會對你了解此篇文章有作用 cookie cookie 現在絕大部分站點都會用到cookie記錄一小部分資訊。cookie 好,簡單的介紹了cookie 之後,接下來開始我們的正文。在此不對比...

如何在瀏覽器不崩潰的情況下過濾200萬行資料?

最近我分配到了乙個非常有趣的任務 在前端顯示1gb檔案和200萬行資料,並實現過濾,在這篇文章中,我將分享我是如何完成這個任務的。最新的需求是 1.json檔案最大可達到1 gb。2.後端不會進行分頁 只能接受這個事實。首先,我嘗試了react virtualized,乙個react元件,可以通過虛...

ios 系統瀏覽器cookie的一下問題

在做vue移動端單頁面系統開發時遇到乙個關於cookie的問題,對於稍微長一點的資料,cookie儲存不完全,不能全部儲存,現給出乙個解決辦法,以下 是對存cookie的封裝,有問題 function addcookie name,value,day 以下 是正確的 主要是對儲存的資料進行編碼處理 ...