マインドマッピング
- デバイスのサイズが変更されたときに現在のデバイスに比例的に適応するために、比例的に適応できないいくつかの要素を考えてみましょう。
- メディアクエリを使用して、さまざまなデバイスに比例してhtmlフォントサイズを設定し、ページ要素のサイズ単位としてremを使用します。htmlフォントサイズが変更されると、要素サイズも変更され、比例スケーリングの適応が実現されます。 。
1つ:less + rem + mediaクエリ
- デザインドラフトの一般的なサイズと幅
- HTMLタグのフォントサイズを動的に設定する
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
@media screen and (min-width: 320px) {
html {
font-size: 21.33px;
}
}
@media screen and (min-width: 750px) {
html {
font-size: 50px;
}
}
div {
width: 2rem;
height: 2rem;
background-color: pink;
}
/* 1. 首先我们选一套标准尺寸 750为准
2. 我们用屏幕尺寸 除以 我们划分的份数 得到了 html 里面的文字大小 但是我们知道不同屏幕下得到的文字大小是不一样的 */
/* 3. 页面元素的rem值 = 页面元素在 750像素的下px值 / html 里面的文字大小 */
</style>
</head>
<body>
<div></div>
</body>
</html>
【叽叽叽溫溫】
デザインドラフトの幅は750pxです
画面を15の部分に分割します(必ずしも15に分割する必要はありません)。その後の計算がコピー数に変更されている限り、アイデアに応じて分割することもできます)
750/15 = 50 1つのコピーは50pxで、各コピーはhtmlフォントサイズです。ここでは50pxです。
…書きたくない
そこで、この記事のように百度で作成しました。モバイル端末のレイアウトプラン1:rem + media query + less
二:flexible.js + rem
モバイル淘宝網チームによって作成されたシンプルで効率的なモバイル端末適応ライブラリ
は、現在のデバイスを10の等しい部分に分割することであるため、異なる画面のメディアクエリを記述する必要がなくなりましたが、異なるデバイスでは、比率は一貫性があります。現在のデバイスのhtmlテキストサイズを決定する必要があります(詳細については、以下を参照してください)。たとえば
、現在のデザインドラフトは750pxであるため、htmlテキストサイズを75px(750px / 10)に設定するだけで済みます。
。ページ要素のレム値:ページ要素のpx値/
残り75 、flexible.jsに計算を任せます
2.1:flexible.js
完全なコードが長すぎるので、最後に置いてください
2.2:具体操作
1:次のディレクトリを作成します
2:HTMLでファイルをインポートする
3:ボディスタイル
body {
min-width: 320px;
max-width: 750px;
/* flexible 给我们划分了 10 等份 */
width: 10rem;
margin: 0 auto;
line-height: 1.5;
font-family: Arial, Helvetica;
}
4:それから書き始めます
- pxをremに変換するプラグインについて
cssrem
プラグインのインストール方法はこの記事に書かれており、同じことが当てはまります。
プラグインをインストールした後、ページの設定に従ってデータを変更する必要があります。
使用する場合:
[ジジワイワイ]メモをドラッグしたり、整理したりしないでください。ケースが見つかりません...
補足:flexible.jsファイルを配置しなかったことがわかりました。
(function flexible (window, document) {
var docEl = document.documentElement
var dpr = window.devicePixelRatio || 1
// adjust body font size
function setBodyFontSize () {
if (document.body) {
document.body.style.fontSize = (12 * dpr) + 'px'
}
else {
document.addEventListener('DOMContentLoaded', setBodyFontSize)
}
}
setBodyFontSize();
// set 1rem = viewWidth / 10
function setRemUnit () {
var rem = docEl.clientWidth / 10
docEl.style.fontSize = rem + 'px'
}
setRemUnit()
// reset rem unit on page resize
window.addEventListener('resize', setRemUnit)
window.addEventListener('pageshow', function (e) {
if (e.persisted) {
setRemUnit()
}
})
// detect 0.5px supports
if (dpr >= 2) {
var fakeBody = document.createElement('body')
var testElement = document.createElement('div')
testElement.style.border = '.5px solid transparent'
fakeBody.appendChild(testElement)
docEl.appendChild(fakeBody)
if (testElement.offsetHeight === 1) {
docEl.classList.add('hairlines')
}
docEl.removeChild(fakeBody)
}
}(window, document))