ホームページ  >  記事  >  ウェブフロントエンド  >  CSS のオーバーフロー属性によるスクロール バーの定義方法

CSS のオーバーフロー属性によるスクロール バーの定義方法

青灯夜游
青灯夜游オリジナル
2018-09-08 18:17:122622ブラウズ

スクロール バーは Web ページでよく見られますが、十分な注目を集めていません。スクロール バーの問題により互換性に対処する必要がある場合にのみ、デバッグ操作を実行してください。この章では、CSS スクロール バーの一般的な内容について説明します。

1: 条件
スクロール バーとオーバーフローは密接に関係しています。親のオーバーフローの値が auto またはスクロールで、要素の内容が要素領域を超えている場合にのみ、スクロール バーが表示されることがあります

CSS のオーバーフロー属性によるスクロール バーの定義方法

2: デフォルト

ブラウザに関係なく、デフォルトのスクロール バーは

ではなく 要素にはデフォルトで 8px のマージンがあるためです。スクロール バーが 要素から来ている場合、スクロール バーとページの間に 8 ピクセルの隙間があるはずです。そのため、スクロール バーは 要素から来ています。 3: サイズ

次のコードで取得できます スクロール バーはブラウザの利用可能な幅を占めます:

chrome/firefox/IE 17px
safari 21px
.box{
    width: 400px;
    overflow: scroll;
}
.in{
    *zoom: 1;
}
<div class="box">
    <div id="in" class="in"></div>
</div>
console.log(400-document.getElementById(&#39;in&#39;).clientWidth);

互換

【1】デフォルトでは、IE7 ブラウザにはデフォルトで垂直スクロール バーがありますが、他のブラウザはそうではありません

//IE7-浏览器 
html{overflow-y: scroll;}
//其他浏览器
html{overflow: auto;}
//去除页面默认滚动条
html{overflow: hidden;}

【2】IE7ブラウザ 他のブラウザのスクロールバー幅設定の仕組みとは異なります

.box{
    width: 200px;
    height: 100px;
    background-color: pink;
    overflow: scroll;
}
.in{
    width: 100%;
    height: 60px;
    background-color: lightgreen;
}
<div class="box">
    <div class="in">测试文字</div>
 </div>

親ボックスに垂直スクロールバーが表示されると、実際には子ボックスの使用可能な幅が減少します。 IE7 ブラウザの子の幅はスクロール バーの幅を無視します。子の幅=400*100%=400px の場合、水平スクロール バーが表示されますが、他のブラウザの子の幅はスクロール バーの幅を考慮します。子の幅 = (400-スクロールバーの幅)*100%

左側がIE7ブラウザ、右側がその他のブラウザです

CSS のオーバーフロー属性によるスクロール バーの定義方法

[3]水平センタリングジャンプ問題

要素が水平センタリングの場合ページ ページに垂直スクロール バーが表示されると、水平方向中央にポップアップが表示される問題が発生します。解決策は以下の通りです:

//IE8-默认
html{overflow-y: scroll}//IE9+,100vw表示浏览器的宽度,100%表示可用内容的宽度
.container{padding-left: calc(100vw-100%)}

Customized

【1】IE

IEブラウザはCSSスタイルを通じてスクロールバーコンポーネントのカスタムカラーの変更をサポートします

scrollbar-face-color 滚动条凸出部分的颜色
scrollbar-shadow-color 立体滚动条阴影的颜色
scrollbar-highlight-color 滚动条空白部分的颜色
scrollbar-3dlight-color 滚动条亮边的颜色
scrollbar-darkshadow-color 滚动条强阴影的颜色
scrollbar-track-color 滚动条的背景颜色 
scrollbar-arrow-color 上下按钮上三角箭头的颜色 
scrollbar-base-color  滚动条的基本颜色

CSS のオーバーフロー属性によるスクロール バーの定義方法

【2】webkit

Webkitカーネルの閲覧ブラウザはスクロール バーのカスタム スタイルをサポートしていますが、IE とは異なり、Webkit は疑似クラスを通じて実装されます

::-webkit-scrollbar 滚动条整体部分
::-webkit-scrollbar-thumb 滚动滑块
::-webkit-scrollbar-track 外层轨道
::-webkit-scrollbar-track-piece 内层轨道
::-webkit-scrollbar-corner 边角
::-webkit-scrollbar-button 两端按钮

[注] スクロール バーの幅と高さのスタイルをパーセンテージ値として設定する場合、ウィンドウ サイズに相対します

CSS のオーバーフロー属性によるスクロール バーの定義方法

[注] スクロールバーの重なり関係は、スクロールバーが一番下にあり、その後に外側のトラック、内側のトラックが続きます。ボタン ボタン、コーナー コーナー、サム スライダーには最上位の

4 つがあります: 疑似クラス関連

:horizontal
//horizontal伪类适用于任何水平方向上的滚动条

:vertical
//vertical伪类适用于任何垂直方向的滚动条

:decrement
//decrement伪类适用于按钮和轨道碎片。表示递减的按钮或轨道碎片,例如可以使区域向上或者向右移动的区域和按钮

:increment
//increment伪类适用于按钮和轨道碎片。表示递增的按钮或轨道碎片,例如可以使区域向下或者向左移动的区域和按钮

:start
//start伪类适用于按钮和轨道碎片。表示对象(按钮 轨道碎片)是否放在滑块的前面

:end
//end伪类适用于按钮和轨道碎片。表示对象(按钮 轨道碎片)是否放在滑块的后面

:double-button
//double-button伪类适用于按钮和轨道碎片。判断轨道结束的位置是否是一对按钮。也就是轨道碎片紧挨着一对在一起的按钮。

:single-button
//single-button伪类适用于按钮和轨道碎片。判断轨道结束的位置是否是一个按钮。也就是轨道碎片紧挨着一个单独的按钮。

:no-button
no-button伪类表示轨道结束的位置没有按钮。

:corner-present
//corner-present伪类表示滚动条的角落是否存在。

:window-inactive
//适用于所有滚动条,表示包含滚动条的区域,焦点不在该窗口的时候。

::-webkit-scrollbar-track-piece:start {
/*滚动条上半边或左半边*/
}

::-webkit-scrollbar-thumb:window-inactive {
/*当焦点不在当前区域滑块的状态*/
}

::-webkit-scrollbar-button:horizontal:decrement:hover {
/*当鼠标在水平滚动条下面的按钮上的状态*/
}





以上がCSS のオーバーフロー属性によるスクロール バーの定義方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。