内联放置不同的按钮和下拉菜单

时间:2019-02-01 19:28:35

标签: javascript html css

我正在设计一个看起来像MS Office Word的网站。应该有一些按钮(斜体,粗体等)和两个下拉菜单(大小和字体)。现在的问题是,无论我做什么,都无法在“字体”旁边显示“大小”。由于字体下拉列表中的元素,它紧随其后。当我在字体之后添加<br>时,很清楚为什么“ size”位于“ fonts”下。但是,当我删除<br>时,存在样式问题,最后一个字体和上一个字体之间有一个空格,并且当我将鼠标悬停在“字体”按钮上时,“ size”仅在字体旁边。 以下是一些更清晰的图像:
<br>一起使用,而又没有悬停with <code><br></code> while not hovering
<br>一起悬停在with <code><br></code> while hovering
没有<br>的同时不悬停without <code><br></code> while not hovering
在悬停without <code><br></code> while hovering时没有<br>(该空间确实打扰了我,因为它破坏了 hover 函数) 所以这是我的代码:html

<span id="toolbar">
 <button class="fontweight" onclick="bold()"><b>B</b></button>
 <button class="fontweight" onclick="italic()"><i>I</i></button>
 <button class="fontweight" onclick="underline()"><u>U</u></button>
 <span class="dropdownfonts" onmouseover="drop()" onmouseout="hide()" >
    <button id="dropdown" onmouseover="drop()" >Fonts</button><br>
    <span id="fonts">
    <button class="fonts"  onclick="change(this.innerHTML)">Arial</button><br>
    <button class="fonts"  onclick="change(this.innerHTML)">Calibri</button><br>
    <button class="fonts"  onclick="change(this.innerHTML)">Century Gothic</button><br>
    <button class="fonts"  onclick="change(this.innerHTML)">Comic Sans</button><br>
    <button class="fonts"  onclick="change(this.innerHTML)">Consolas</button><br>
    <button class="fonts"  onclick="change(this.innerHTML)">Courier</button><br>
    <button class="fonts"  onclick="change(this.innerHTML)">MV Boli</button><br>
    <button class="fonts"  onclick="change(this.innerHTML)">Times New Roman</button>
    </span> 
 </span>
 <span class="dropdownfonts" onmouseover="dropsize()" onmouseout="hidesize()" >
    <button id="size">Size</button><br>
    <span id="sizes">
    <button class="sizes"  onclick="changesize(this.innerHTML)">10</button><br>
    <button class="sizes"  onclick="changesize(this.innerHTML)">12</button><br>
    <button class="sizes"  onclick="changesize(this.innerHTML)">14</button><br>
    <button class="sizes"  onclick="changesize(this.innerHTML)">16</button><br>
    <button class="sizes"  onclick="changesize(this.innerHTML)">18</button><br>
    <button class="sizes"  onclick="changesize(this.innerHTML)">20</button><br>
    <button class="sizes"  onclick="changesize(this.innerHTML)">22</button><br>
    <button class="sizes"  onclick="changesize(this.innerHTML)">24</button><br>
    </span>
    </span>

CSS:

.fonts {display: none;
position: relative;
background-color: #f1f1f1;
min-width: 300px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);

}
.sizes{display: none;
position: relative;
background-color: #f1f1f1;
min-width: 72px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);

}

#dropdown, #size,  .fontweight{
background-color: #4CAF50;
color: white;
padding: 16px;
font-size: 16px;
border: green solid 5px;
display: inline-block;
}


#fonts, #sizes{ 
display: inline;
position: relative;
}
#dropdownfonts{position: relative;
display: inline-block;  
}
#dropdown:hover, #dropdown:focus {
background-color: #2980B9;
}

JS:     函数bold(){     document.getElementById(“ p”)。style.fontWeight =“ bold”;

}

function underline(){

document.getElementById("p").style.textDecoration="underline"
            }

function italic(){

document.getElementById("p").style.fontStyle="italic";
}

function show(){
document.getElementById("p").style.display="block";
}

T=document.getElementsByClassName("fonts")

function hide()
{   for(i=0;i<T.length;i++)
T[i].style.display="none"; }

function drop()
{for(i=0;i<T.length;i++)
T[i].style.display="inline-block";}

S=document.getElementsByClassName("sizes")

function hidesize()
{   for(i=0;i<T.length;i++)
S[i].style.display="none"; }

function dropsize()
{for(i=0;i<T.length;i++)
S[i].style.display="inline-block";}

function change(btn)
{A=btn
document.getElementById("p").style.fontFamily=A;}


function changesize(button)
{B=button
document.getElementById("p").style.fontSize=B +  "px";}

差不多就可以了!在执行此操作时,是否可以隐藏下拉菜单占用的空间?我认为那实际上可能是一个解决方案。 谢谢!

1 个答案:

答案 0 :(得分:1)

使跨度#fonts绝对,使它定位在最接近的相对位置,并且不会影响流程。

.dropdownfonts {
display:inline-block;
position: relative;
}
#fonts {
display:block;
position:absolute;
}