流動的なWebサイトがあり、メニューは幅の20%です。メニューのフォントサイズを適切に測定して、常にボックスの幅に合わせ、次の行に折り返さないようにします。私は「em」を単位として使用することを考えていましたが、ブラウザのフォントサイズに比例するため、解像度を変更してもフォントサイズは変わりません。
PTSとパーセンテージも試しました。必要な機能が何もありません...
続行方法のヒントを教えてください。
@media screen and (max-width : 320px)
{
body or yourdiv element
{
font:<size>px/em/rm;
}
}
@media screen and (max-width : 1204px)
{
body or yourdiv element
{
font:<size>px/em/rm;
}
}
画面の画面サイズに応じて手動で指定できます。画面サイズを変えて、フォントサイズを手動で追加してください。
これを達成するにはいくつかの方法があります
media queryを使用しますが、いくつかのブレークポイントにフォントサイズが必要です
body
{
font-size: 22px;
}
h1
{
font-size:44px;
}
@media (min-width: 768)
{
body
{
font-size: 17px;
}
h1
{
font-size:24px;
}
}
%またはemの次元を使用します。基本フォントサイズを変更するだけで、すべてが変更されます。前のものとは異なり、毎回h1ではなくbodyフォントを変更するか、ベースフォントサイズをデバイスのデフォルトに設定してemですべて休めることができます
kyleschaeffer.com/.... を参照してください
CSS3は、ビューポートに関連する新しいディメンションをサポートします。しかし、これはAndroidでは動作しません
3.2vmax = 3.2vwまたは3.2vhの大きい方
body
{
font-size: 3.2vw;
}
css-tricks.com/.... および caniuse.com/.... もご覧ください
Nice JSソリューションを開発しました-これは完全にレスポンシブなHTML(つまり、パーセンテージで構築されたHTML)に適しています
フォントサイズの定義には「em」のみを使用します。
htmlフォントサイズは10ピクセルに設定されます。
html {
font-size: 100%;
font-size: 62.5%;
}
ドキュメント対応でフォントサイズ変更関数を呼び出します。
//これにはJQueryが必要です
function doResize() {
// FONT SIZE
var ww = $('body').width();
var maxW = [your design max-width here];
ww = Math.min(ww, maxW);
var fw = ww*(10/maxW);
var fpc = fw*100/16;
var fpc = Math.round(fpc*100)/100;
$('html').css('font-size',fpc+'%');
}
このツールを試してみてください: http://fittextjs.com/
私はこの2番目のツールを使用していませんが、似ているようです: https://github.com/zachleat/BigText
なぜこれが複雑なのかわかりません。私はこの基本的なjavascriptをします
<body onresize='document.getElementsByTagName("body")[0].style[ "font-size" ] = document.body.clientWidth*(12/1280) + "px";'>
12は、1280の解像度で12pxを意味します。ここで必要な値を決定します
https://stackoverflow.com/a/17845473/189411 のバリアントを作成しました
ここで、「チェック」サイズにするボックスの最小サイズと最大サイズの関係で、最小テキストサイズと最大テキストサイズを設定できます。さらに、テキストサイズを適用するボックスとは異なるdom要素のサイズを確認できます。
#size-2要素の幅500pxおよび960pxに基づいて、#size-2要素で19px〜25pxの範囲でテキストのサイズを変更します。
resizeTextInRange(500,960,19,25,'#size-2');
Body要素の幅500pxおよび960pxに基づいて、#size-1要素で13px〜20pxの範囲でテキストのサイズを変更します。
resizeTextInRange(500,960,13,20,'#size-1','body');
完全なコードがあります https://github.com/kiuz/sandbox-html-js-css/tree/gh-pages/text-resize-in-range-of-text-and-screen/src
function inRange (x,min,max) {
return Math.min(Math.max(x, min), max);
}
function resizeTextInRange(minW,maxW,textMinS,textMaxS, elementApply, elementCheck=0) {
if(elementCheck==0){elementCheck=elementApply;}
var ww = $(elementCheck).width();
var difW = maxW-minW;
var difT = textMaxS- textMinS;
var rapW = (ww-minW);
var out=(difT/100)*(rapW/(difW/100))+textMinS;
var normalizedOut = inRange(out, textMinS, textMaxS);
$(elementApply).css('font-size',normalizedOut+'px');
console.log(normalizedOut);
}
$(function () {
resizeTextInRange(500,960,19,25,'#size-2');
resizeTextInRange(500,960,13,20,'#size-1','body');
$(window).resize(function () {
resizeTextInRange(500,960,19,25,'#size-2');
resizeTextInRange(500,960,13,20,'#size-1','body');
});
});
これは私のために働いた:
body {
font-size: calc([minimum size] + ([maximum size] - [minimum size]) * ((100vw - [minimum
viewport width]) / ([maximum viewport width] - [minimum viewport width])));
}
ここで詳細に説明します: https://css-tricks.com/books/volume-i/scale-typography-screen-size/