検索
ホームページウェブフロントエンドhtmlチュートリアルdiv 適応幅に問題があります。助けてください。 _html/css_WEB-ITnose


在左侧做了一个可以自动伸缩的菜单栏,想让菜单栏展开时,完全展开右面带地图的div,而不是被左面的菜单遮住一部分,该怎么解决?

这是菜单展开的图:搜索

这是菜单隐藏的图:

这是body:
    

        
 
        

             

        
    
    

これはスタイルシートです:
#common_box{
width:100%;
left:0;
border: 1px #789 ; を使用してusing use through through through through out through out through out through through through ' s ' ‐ ‐ ‐‐ ‐‐ ‐ border:1px z-index:99
}
#cli_on{
幅:10ピクセル;
フロート:右;
テキスト整列: センター;
フォントサイズ: 24ピクセル; #f00;
}
{
位置: 固定;
左: 0px;
高さ:
高さ: 650px ; これは伸縮メニューの js です。
var common_box.getElementbyid( "Common_box"); timer = setInterval(slideright, 10); timer = setInterval(slideleft, 10); if (r_len } r);このウェブサイトの。




ディスカッションへの返信 (解決策)

ページのレイアウトが間違っています。position:fixed を使用していることがわかります。表示位置を制御する場合、上書きの問題が発生するのは明らかです。

これを次のように処理できます:
左側のピースには位置決めを使用し、右側のピースには位置決めを使用せず、左側の距離を制御するために margin-left を使用します

変更するとき、同時に右側の margin-left の値を変更するだけです。

こんなことを言っていますが、理解できますか?

mydiv{	margin-top:40px;	background-color:#eee;	height:650px;	margin-left:280px;}

window.onload = function () {	var common_box = document.getElementById("common_box");	var cli_on = document.getElementById("cli_on");	var mapDiv = document.getElementById("mapDiv");	//zheli	var flag = true, r_len = 0, timer = null;	cli_on.onclick = function () {		if (flag) {			r_len = 0;			timer = setInterval(slideright, 10);		} else {			r_len = -270;			timer = setInterval(slideleft, 10);		}	}	function slideright() {		if (r_len <= -270) {			flag = !flag;			cli_on.innerHTML = "";			clearInterval(timer);			return false;		} else {			r_len -= 5;			common_box.style.left = r_len + "px";			mapDiv.style.marginLeft = 270 + r_len + "px";			//zheli		}	}	function slideleft() {		if (r_len >= 0) {			clearInterval(timer);			flag = !flag;			cli_on.innerHTML = "";			return false;		} else {			r_len += 5;			common_box.style.left = r_len + "px";			mapDiv.style.marginLeft = 270 + r_len + "px";			//zheli		}	}}

あなたのものに基づいて、少し変更しました。これはあなたが望む効果ですか?互換性についてはテストされていません。

ただし、一部のエフェクトでは、HTML 部分のレイアウトも非常に重要です。最初にレイアウトを考えてから、JS と CSS を記述するのが簡単になります。

divの幅を変更する必要があるような気がします。メニューとマップを左右に移動するには、左などを使用します。これらは以前に描画されているため、左または右に移動すると、メニュー自体の一部が覆われるか (この効果は左側のメニューにのみ必要です)、初期ロードのいずれかになります。画面が小さすぎるため、幅の変更に動的に適応できません (マップを左に移動すると、右側の新しい部分が自動的に塗りつぶされません)。
したがって、タイマーイベントで両側の div の幅を変更し、幅の変更に適応するように div のコンテンツを補充することをお勧めします。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><style>#common_box{     width:15%;     height :100%;     position:fixed;     left:0;     top:40px;     border:1px solid #789;     background:#fff;     z-index:99;	 float:left;	 padding:0;    }    #cli_on{     width:10px;     height:100%;     float:right;     cursor:pointer;     background:#ccc;     text-align:center;     line-height:180px;     font-size:24px;     color:#f00;    }    .mydiv    {        position:fixed;        top:40px;        right:0px;        width: 85%;        height:650px;		float: right;		padding:0;        }</style><script type="text/javascript">	//左侧弹出菜单        window.onload = function () {            var common_box = document.getElementById("common_box");            var cli_on = document.getElementById("cli_on");			var mapDiv = document.getElementById("mapDiv");            var flag = true, r_len = 0, timer = null;						var mapDiv_width = mapDiv.clientWidth;			var common_box_width = common_box.clientWidth;			var body_client_width = mapDiv.clientWidth + common_box.clientWidth;			            cli_on.onclick = function () {                if (flag) {                    r_len = common_box_width;                    timer = setInterval(slideright, 10);                } else {                    r_len = 0;                    timer = setInterval(slideleft, 10);                }            }            function slideright() {                if (r_len <= 10) {                    flag = !flag;					common_box.style.width = 10 + "px";					mapDiv.style.width = body_client_width - common_box.clientWidth + "px";					cli_on.innerHTML = "菜单栏";					mapDiv.innerHTML = "地图";                    clearInterval(timer);                    return false;                } else {                    r_len -= 5;                    common_box.style.width = r_len + "px";					mapDiv.style.width = body_client_width - common_box.clientWidth + "px";					mapDiv.innerHTML = "地图";                }            }            function slideleft() {                if (r_len >= common_box_width) {                    clearInterval(timer);                    flag = !flag;					common_box.style.width = common_box.clientWidth + "px";					mapDiv.style.width = mapDiv_width + "px";                    cli_on.innerHTML = "菜单栏";					mapDiv.innerHTML = "地图";                    return false;                } else {                    r_len += 5;                    common_box.style.width = r_len + "px";					mapDiv.style.width = body_client_width - common_box.clientWidth + "px";					mapDiv.innerHTML = "地图";                }            }        }</script><body>	<div>		<div id="common_box" style="background-color:yellow; overflow: hidden;">             <div id="cli_on">菜单栏</div>        </div>    		<div id="mapDiv" class ="mydiv" style="background-color:green;">地图</div>     </div></body></html>



div の幅を変更する必要があるような気がします。メニューとマップを左右に移動するには、左などを使用します。これらは以前に描画されているため、左または右に移動すると、メニュー自体の一部が覆われるか (この効果は左側のメニューにのみ必要です)、初期ロードのいずれかになります。画面が小さすぎるため、幅の変更に動的に適応できません (マップを左に移動すると、右側の新しい部分が自動的に塗りつぶされません)。
したがって、タイマーイベントで両側の div の幅を変更し、幅の変更に適応するように div のコンテンツを再充填することをお勧めします。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><style>#common_box{     width:15%;     height :100%;     position:fixed;     left:0;     top:40px;     border:1px solid #789;     background:#fff;     z-index:99;	 float:left;	 padding:0;    }    #cli_on{     width:10px;     height:100%;     float:right;     cursor:pointer;     background:#ccc;     text-align:center;     line-height:180px;     font-size:24px;     color:#f00;    }    .mydiv    {        position:fixed;        top:40px;        right:0px;        width: 85%;        height:650px;		float: right;		padding:0;        }</style><script type="text/javascript">	//左侧弹出菜单        window.onload = function () {            var common_box = document.getElementById("common_box");            var cli_on = document.getElementById("cli_on");			var mapDiv = document.getElementById("mapDiv");            var flag = true, r_len = 0, timer = null;						var mapDiv_width = mapDiv.clientWidth;			var common_box_width = common_box.clientWidth;			var body_client_width = mapDiv.clientWidth + common_box.clientWidth;			            cli_on.onclick = function () {                if (flag) {                    r_len = common_box_width;                    timer = setInterval(slideright, 10);                } else {                    r_len = 0;                    timer = setInterval(slideleft, 10);                }            }            function slideright() {                if (r_len <= 10) {                    flag = !flag;					common_box.style.width = 10 + "px";					mapDiv.style.width = body_client_width - common_box.clientWidth + "px";					cli_on.innerHTML = "菜单栏";					mapDiv.innerHTML = "地图";                    clearInterval(timer);                    return false;                } else {                    r_len -= 5;                    common_box.style.width = r_len + "px";					mapDiv.style.width = body_client_width - common_box.clientWidth + "px";					mapDiv.innerHTML = "地图";                }            }            function slideleft() {                if (r_len >= common_box_width) {                    clearInterval(timer);                    flag = !flag;					common_box.style.width = common_box.clientWidth + "px";					mapDiv.style.width = mapDiv_width + "px";                    cli_on.innerHTML = "菜单栏";					mapDiv.innerHTML = "地图";                    return false;                } else {                    r_len += 5;                    common_box.style.width = r_len + "px";					mapDiv.style.width = body_client_width - common_box.clientWidth + "px";					mapDiv.innerHTML = "地图";                }            }        }</script><body>	<div>		<div id="common_box" style="background-color:yellow; overflow: hidden;">             <div id="cli_on">菜单栏</div>        </div>    		<div id="mapDiv" class ="mydiv" style="background-color:green;">地图</div>     </div></body></html>

さて、あなたの助けに従ってコードを修正して実行しましたが、左側のメニューバーは右側の地図を覆いませんが、メニューバーが非表示になると右側の地図は消えます。右側の空白の 15% いいえ メソッドは自動的に埋められます




div の幅を変更する必要があるように感じます。メニューとマップを左右に移動するには、左などを使用します。これらは以前に描画されているため、左または右に移動すると、メニュー自体の一部が覆われるか (この効果は左側のメニューにのみ必要です)、初期ロードのいずれかになります。画面が小さすぎるため、幅の変更に動的に適応できません (マップを左に移動すると、右側の新しい部分が自動的に塗りつぶされません)。
したがって、タイマーイベントで両側の div の幅を変更し、幅の変更に適応するように div のコンテンツを補充することをお勧めします。

リーリー


そうですね、あなたの助けに従ってコードを修正して実行しました。確かに、左側のメニューバーは右側のマップをカバーしませんが、メニューバーが非表示になると、右側のマップは15%空白のままになります。右側は自動的に塗りつぶすことはできません


私が作成したエフェクトでは、地図を自動的に適応させるために、
mapDiv.innerHTML = "map" を手動で再描画する必要があります。画面が切り替わります。

mydiv{	margin-top:40px;	background-color:#eee;	height:650px;	margin-left:280px;}


window.onload = function () {	var common_box = document.getElementById("common_box");	var cli_on = document.getElementById("cli_on");	var mapDiv = document.getElementById("mapDiv");	//zheli	var flag = true, r_len = 0, timer = null;	cli_on.onclick = function () {		if (flag) {			r_len = 0;			timer = setInterval(slideright, 10);		} else {			r_len = -270;			timer = setInterval(slideleft, 10);		}	}	function slideright() {		if (r_len <= -270) {			flag = !flag;			cli_on.innerHTML = "";			clearInterval(timer);			return false;		} else {			r_len -= 5;			common_box.style.left = r_len + "px";			mapDiv.style.marginLeft = 270 + r_len + "px";			//zheli		}	}	function slideleft() {		if (r_len >= 0) {			clearInterval(timer);			flag = !flag;			cli_on.innerHTML = "";			return false;		} else {			r_len += 5;			common_box.style.left = r_len + "px";			mapDiv.style.marginLeft = 270 + r_len + "px";			//zheli		}	}}


あなたのものに基づいて、少し変更しました。これはあなたが望む効果ですか?互換性についてはテストされていません。

ただし、一部のエフェクトでは、HTML 部分のレイアウトも非常に重要です。最初にレイアウトを考えてから、JS と CSS を記述するのが簡単になります。

試してみたらうまくいきました!位置を直接固定するためにposition:fixed;を使用するのは悪いですか?


divの幅を変更する必要があるような気がします。メニューとマップを左右に移動するには、左などを使用します。これらは以前に描画されているため、左または右に移動すると、メニュー自体の一部が覆われるか (この効果は左側のメニューにのみ必要です)、初期ロードのいずれかになります。画面が小さすぎるため、幅の変更に動的に適応できません (マップを左に移動すると、右側の新しい部分が自動的に塗りつぶされません)。
したがって、タイマーイベントで両側の div の幅を変更し、幅の変更に適応するように div のコンテンツを補充することをお勧めします。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><style>#common_box{     width:15%;     height :100%;     position:fixed;     left:0;     top:40px;     border:1px solid #789;     background:#fff;     z-index:99;	 float:left;	 padding:0;    }    #cli_on{     width:10px;     height:100%;     float:right;     cursor:pointer;     background:#ccc;     text-align:center;     line-height:180px;     font-size:24px;     color:#f00;    }    .mydiv    {        position:fixed;        top:40px;        right:0px;        width: 85%;        height:650px;		float: right;		padding:0;        }</style><script type="text/javascript">	//左侧弹出菜单        window.onload = function () {            var common_box = document.getElementById("common_box");            var cli_on = document.getElementById("cli_on");			var mapDiv = document.getElementById("mapDiv");            var flag = true, r_len = 0, timer = null;						var mapDiv_width = mapDiv.clientWidth;			var common_box_width = common_box.clientWidth;			var body_client_width = mapDiv.clientWidth + common_box.clientWidth;			            cli_on.onclick = function () {                if (flag) {                    r_len = common_box_width;                    timer = setInterval(slideright, 10);                } else {                    r_len = 0;                    timer = setInterval(slideleft, 10);                }            }            function slideright() {                if (r_len <= 10) {                    flag = !flag;					common_box.style.width = 10 + "px";					mapDiv.style.width = body_client_width - common_box.clientWidth + "px";					cli_on.innerHTML = "菜单栏";					mapDiv.innerHTML = "地图";                    clearInterval(timer);                    return false;                } else {                    r_len -= 5;                    common_box.style.width = r_len + "px";					mapDiv.style.width = body_client_width - common_box.clientWidth + "px";					mapDiv.innerHTML = "地图";                }            }            function slideleft() {                if (r_len >= common_box_width) {                    clearInterval(timer);                    flag = !flag;					common_box.style.width = common_box.clientWidth + "px";					mapDiv.style.width = mapDiv_width + "px";                    cli_on.innerHTML = "菜单栏";					mapDiv.innerHTML = "地图";                    return false;                } else {                    r_len += 5;                    common_box.style.width = r_len + "px";					mapDiv.style.width = body_client_width - common_box.clientWidth + "px";					mapDiv.innerHTML = "地图";                }            }        }</script><body>	<div>		<div id="common_box" style="background-color:yellow; overflow: hidden;">             <div id="cli_on">菜单栏</div>        </div>    		<div id="mapDiv" class ="mydiv" style="background-color:green;">地图</div>     </div></body></html>

さて、あなたの助けに従ってコードを修正して実行しました。確かに、左側のメニューバーは右側の地図を覆いませんが、メニューバーが非表示になると、右側の地図は消えます。右側の空白スペースの 15% いいえ、メソッドは自動的に埋められます
私が作成したエフェクトでは、マップを手動で再描画する必要があります mapDiv.innerHTML = "map"; をマップの読み込みコードに置き換える必要があります。 、マップが画面の変化に自動的に適応できるようにします。

マップはmapDivにのみロードされます。完全にロードしたい場合は、divの幅を変更するだけです。
位置決めやフローティングのものはできるだけ使用しないほうがよいと思います。多すぎると、後から機能を追加したり、スタイルを変更したりするときに困難になります。
もちろん、すべてのレイアウトで float とposition を使用しない限り、それを使用する必要がある場合もあります。


それは個人的な習慣でもあります。

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

Web開発におけるHTML、CSS、およびJavaScriptの役割は次のとおりです。1。HTMLは、Webページ構造を定義し、2。CSSはWebページスタイルを制御し、3。JavaScriptは動的な動作を追加します。一緒に、彼らは最新のウェブサイトのフレームワーク、美学、および相互作用を構築します。

HTMLの未来:ウェブデザインの進化とトレンドHTMLの未来:ウェブデザインの進化とトレンドApr 17, 2025 am 12:12 AM

HTMLの将来は、無限の可能性に満ちています。 1)新機能と標準には、より多くのセマンティックタグとWebComponentsの人気が含まれます。 2)Webデザインのトレンドは、レスポンシブでアクセス可能なデザインに向けて発展し続けます。 3)パフォーマンスの最適化により、応答性の高い画像読み込みと怠zyなロードテクノロジーを通じてユーザーエクスペリエンスが向上します。

HTML対CSS対JavaScript:比較概要HTML対CSS対JavaScript:比較概要Apr 16, 2025 am 12:04 AM

Web開発におけるHTML、CSS、およびJavaScriptの役割は次のとおりです。HTMLはコンテンツ構造を担当し、CSSはスタイルを担当し、JavaScriptは動的な動作を担当します。 1。HTMLは、セマンティクスを確保するためにタグを使用してWebページの構造とコンテンツを定義します。 2。CSSは、セレクターと属性を介してWebページスタイルを制御して、美しく読みやすくします。 3。JavaScriptは、動的でインタラクティブな関数を実現するために、スクリプトを通じてWebページの動作を制御します。

HTML:それはプログラミング言語か何か他のものですか?HTML:それはプログラミング言語か何か他のものですか?Apr 15, 2025 am 12:13 AM

htmlisnotaprogramminglanguage; itisamarkuplanguage.1)htmlStructuresandformatswebcontentusingtags.2)ItworkswithcsssssssssdjavascriptforInteractivity、強化を促進します。

HTML:Webページの構造の構築HTML:Webページの構造の構築Apr 14, 2025 am 12:14 AM

HTMLは、Webページ構造の構築の基礎です。 1。HTMLは、コンテンツ構造とセマンティクス、および使用などを定義します。タグ。 2. SEO効果を改善するために、などのセマンティックマーカーを提供します。 3.タグを介したユーザーの相互作用を実現するには、フォーム検証に注意してください。 4. JavaScriptと組み合わせて、動的効果を実現するなどの高度な要素を使用します。 5.一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれ、検証ツールが必要です。 6.最適化戦略には、HTTP要求の削減、HTMLの圧縮、セマンティックタグの使用などが含まれます。

テキストからウェブサイトへ:HTMLの力テキストからウェブサイトへ:HTMLの力Apr 13, 2025 am 12:07 AM

HTMLは、Webページを構築するために使用される言語であり、タグと属性を使用してWebページの構造とコンテンツを定義します。 1)htmlは、などのタグを介してドキュメント構造を整理します。 2)ブラウザはHTMLを分析してDOMを構築し、Webページをレンダリングします。 3)マルチメディア関数を強化するなど、HTML5の新機能。 4)一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれます。 5)最適化の提案には、セマンティックタグの使用とファイルサイズの削減が含まれます。

HTML、CSS、およびJavaScriptの理解:初心者向けガイドHTML、CSS、およびJavaScriptの理解:初心者向けガイドApr 12, 2025 am 12:02 AM

webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

HTMLの役割:Webコンテンツの構造HTMLの役割:Webコンテンツの構造Apr 11, 2025 am 12:12 AM

HTMLの役割は、タグと属性を使用してWebページの構造とコンテンツを定義することです。 1。HTMLは、読みやすく理解しやすいようなタグを介してコンテンツを整理します。 2。アクセシビリティとSEOを強化するには、セマンティックタグなどを使用します。 3. HTMLコードの最適化により、Webページの読み込み速度とユーザーエクスペリエンスが向上する可能性があります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール