javascript - JavaScript函数发生时宽度会自动改变吗?
问题描述
我目前正在经历一些相当奇怪的事情。我正在为客户端构建一个网站,其中包括一个水平导航栏,可以动态更改页面内容,而无需通过 javascript 重新加载。四个选项卡中的三个功能正常,但是当我选择最后一个选项卡时,侧栏的宽度会显着增加,将我的服务表单从背景中推出并离开页面 - 即使 javascript 根本不应该影响该元素. 我整天都在玩它,无法弄清楚是什么原因造成的。
我的 JavaScript 是:
var jsOverview = document.getElementById('overview');
var jsQuote = document.getElementById('quote');
function changeTextQuote() {
if (jsOverview.style.display === 'none') {
jsOverview.style.display = 'block';
jsQuote.style.display = 'none';
} else {
jsOverview.style.display = 'none';
jsQuote.style.display = 'block';
}
}
<!-- begin snippet: js hide: false console: true babel: false -->
/*Service Pages CSS*/
.services {
display: grid;
width: 100%;
margin: 0 600px;
margin-bottom: 10px;
}
.side-bar {
grid-column: 1;
grid-row: 1;
background: black;
border-bottom: 5px solid white;
border-left: 5px solid white;
border-top: 5px solid white;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
width: 100%;
height: 258px;
margin: 30px 0;
margin-right: 25px;
}
ul.side-bar-list {
text-align: left;
padding: 0;
width: 100%;
}
.side-bar-list li {
margin-bottom: 10px;
margin-top: 10px;
padding-top: 15px;
padding-bottom: 15px;
padding-left: 10px;
width: 100%;
}
.side-bar-list li:hover {
color: white;
text-decoration: none;
background-color: darkred;
}
.side-bar-list li:focus {
color: white;
text-decoration: none;
background-color: darkred;
}
.side-bar ul {
list-style-type: none;
}
.side-bar-item {
color: white;
text-align: left;
text-decoration: none;
}
.side-bar-item:hover {
color: white;
text-decoration: none;
}
.side-bar-item:focus {
color: white;
text-decoration: none;
}
.services-content {
grid-column: 2;
grid-row: 1;
background: rgba(90, 90, 90, 0.6);
border: 5px solid black;
border-radius: 5px;
padding-left: 10px;
width: 30%;
margin-bottom: 5px;
}
.serviceForm {
background: rgba(90, 90, 90, 0.6);
border: 5px solid black;
border-radius: 5px;
grid-column: 2;
grid-row: 1;
display: grid;
grid-column-gap: 20px;
width: 30%;
margin: 20px auto;
padding: 10px;
padding-left: 20px;
}
.col-left {
grid-column: 1;
grid-row: 1;
}
.col-right {
grid-column: 3;
grid-row: 1;
}
.commentText {
grid-column-start: 1;
grid-column-end: 4;
}
label {
color: black;
}
span {
color: white;
}
textarea[name=comments] {
resize: none;
padding: 0;
margin: 0;
width: 100%;
max-width: 520px;
height: 150px;
}
HTML:
<body>
<div class="services">
<div class="side-bar">
<ul class="side-bar-list">
<li><a class="side-bar-item" href="#" onclick="changeTextOverview(); return false;">Overview</a></li>
<li><a class="side-bar-item" href="#" onclick="changeTextInterior(); return false;">Interior Lighting</a></li>
<li><a class="side-bar-item" href="#" onclick="changeTextExterior(); return false;">Exterior Lighitng</a></li>
<li><a class="side-bar-item" href="#" onclick="changeTextQuote(); return false;">Request a Quote</a></li>
</ul>
</div>
<div class="services-content">
<div id="overview">
<h1>Lighting Service:</h1><br />
<p>Text removed for sake of business entity.</p>
</div>
<div id="quote" style="display: none;" <h1>Request a Quote</h1>
<form class="serviceForm" action="mailto:companyemail" method="post" enctype="text/plain">
<div class="col-left">
<label>
<span>* Name:</span><br />
<input type="text" name="LightingRequestName" required />
</label><br />
<label>
<span>* Email:</span><br />
<input type="text" name="LightingRequestEmail" required />
</label><br />
<label>
<span>Company:</span><br />
<input type="text" name="LightingRequestCompany" />
</label><br />
<label>
<span>Address:</span><br />
<input type="text" name="LightingRequestAddress" />
</label><br />
</div>
<div class="col-right">
<label>
<span>City:</span><br />
<input type="text" name="LightingRequestCity" />
</label><br />
<label>
<span>State:</span><br />
<input type="text" name="LightingRequestState" />
</label><br />
<label>
<span>Zip Code:</span><br />
<input type="text" name="LightingRequestZip" />
</label><br />
<label>
<span>Phone Number:</span><br />
<input type="text" name="LightingRequestNumber" />
</label><br />
</div>
<label class="commentText">
<span>Comments:</span><br />
<textarea name="comments"></textarea><br />
</label>
<div class="formSubmitButton">
<input type="submit" value="Submit" /><br />
<br />
</div>
</form>
</div>
</div>
</div>
<script src="~/Content/LightingPageText.js"></script>
<script src="~/Content/ServicesQuote.js"></script>
</body>
我确定这可能是我忽略的一些非常愚蠢的事情,但感谢您提供任何帮助!
编辑:我在 chrome 上的检查窗口中环顾四周,每当我单击按钮显示表单时,侧栏所在的实际网格列就会展开,将其余内容推离屏幕。不知道为什么会这样。我仍在玩它,但希望这一启示将有助于得出一些答案。
解决方案
如果这是从您的来源直接复制粘贴,那么您忘记了#quote
.
你的:<div id="quote" style="display: none;" <h1>Request a Quote</h1>
更新:<div id="quote" style="display: none;"> <h1>Request a Quote</h1>
注意打开>
前<h1>
。
推荐阅读
- c# - 从 Azure 上的 Azure 功能运行时,FTP 服务器返回 530(未登录)
- docker - Docker [FastAPI] 构建多个图像而不是在 localhost 上加载
- python - Pandas:尽管将所有选项设置为最大(无),但仍无法显示()整个 df?
- python - 如何在 python sklearn 中为 NMF 选择最佳组件数量?
- r - 使用for循环更新R中的数据框
- blockchain - 蜡上的 cleos 获取信息错误 [失败并出现错误:解析错误(4)“错误”中的意外字符“101”]
- javascript - 如何刮掉每一行?
- python - 具有相对路径和绝对路径的 PIL 图像中的 FileNotFoundError
- regex - scala - 根据特殊字符提取子字符串
- c# - 无法创建 PublishProfile.xml 错误为应用服务创建新的发布配置文件