web-dev-qa-db-ja.com

CSSドロップダウンメニューを中央に配置する方法

助けが必要です。 CSSドロップダウンメニューがありますが、タイトルを中央に配置して、すべての画面サイズで中央に配置したいのですが、現時点では左側に固定されています。

http://jsfiddle.net/y4vDC/

どんな助けでも大歓迎です。

HTMLコードの一部を次に示します。

<div id='cssmenu'>
  <ul>
    <li><a href='events.html'><span>Events</span></a></li>
  </ul>
6
DanCarroll

このcssを#cssmenu> ul> liの場合に置き換えます。

#cssmenu > ul > li {

    display:inline-block;

    margin-left: 15px;       /* This is when the drop down box appears */

    position: relative;

}

これをcssコードに追加します。

 #cssmenu > ul {
        text-align:center;
 }

ここにあります: http://jsfiddle.net/y4vDC/10/

7
user1447420

li要素をinlineにする必要があります。次に、親要素でtext-alignを使用してそれらを中央に配置します。

#cssmenu ul {
  text-align:center;
}
#cssmenu ul li {
  display: inline;
}

それらがinlineのままであるためには、リスト要素からfloatを削除する必要があります。

http://jsfiddle.net/y4vDC/13/

2
pzin

少なくとも2つの簡単なオプションがあります。

  1. ulをdisplay:tableおよびmargin:auto;http://jsfiddle.net/y4vDC/11/ として設定します
  2. 親でulをdisplay:inline-blockおよびtext-align:centerとして設定します http://jsfiddle.net/y4vDC/12/

edit11/2019:そして今日では以下も使用できます:

  • width:max-content; + margin:auto;
#cssmenu ul {
  margin: 0 auto;/* UPDATE  1/2 */
  padding:0;
  width:max-content;/* UPDATE 2/2 */
  padding: 0;
}

#cssmenu li {
  margin: 0;
  padding: 0;
}

#cssmenu a {
  margin: 0;
  padding: 0;
}

#cssmenu ul {
  list-style: none;
}

#cssmenu a {
  text-decoration: none;
}

#cssmenu {
  height: 70px;  /* This is for the main menu bit at the top */
  width: 100%;  /* This means on every screen no matter the size, the width will cover the top  */
  line-height: normal;
  text-align: center;
  background-color: rgb(35, 35, 35);
  box-shadow: 0px 2px 3px rgba(0, 0, 0, .4);
  vertical-align: middle;
}

#cssmenu>ul>li {
  float: left;
  margin-left: 15px;  /* This is when the drop down box appears */
  position: relative;
}

#cssmenu>ul>li>a {
  color: rgb(160, 160, 160);
  font-family: Verdana, 'Lucida Grande';
  font-size: 14px;
  line-height: 70px;  /* This bit chances the size of the text on the main heading */
  padding: 15px 24px; /* This is the padding between the different titles */
  -webkit-transition: color .15s;
  -moz-transition: color .15s;
  -o-transition: color .15s;
  transition: color .15s;
}

#cssmenu>ul>li>a:hover {
  color: rgb(250, 250, 250);
}

#cssmenu>ul>li>ul {
  opacity: 0;
  visibility: hidden;
  padding: 16px 0 20px 0;
  background-color: rgb(250, 250, 250);
  text-align: left;  /* This is for the text when box is dropped down, centered isnt always totally in the middle so best to have on the left */
  position: absolute;
  top: 55px;  /* This is for the drop down annimation */
  left: 50%;
  margin-left: -90px;
  width: 180px;
  -webkit-transition: all .3s .1s;
  -moz-transition: all .3s .1s;
  -o-transition: all .3s .1s;
  transition: all .3s .1s;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  border-radius: 5px;
  -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, .4);
  -moz-box-shadow: 0px 1px 3px rgba(0, 0, 0, .4);
  box-shadow: 0px 1px 3px rgba(0, 0, 0, .4);
}

#cssmenu>ul>li:hover>ul {
  opacity: 1;
  top: 65px;  /* This is how far from the top the drop down annimation will go  */
  visibility: visible;
}

#cssmenu>ul>li>ul:before {
  content: '';
  display: block;
  border-color: transparent transparent rgb(250, 250, 250) transparent;
  border-style: solid;
  border-width: 10px;  /* The border on the drop down box  */
  position: absolute;
  top: -20px;
  left: 50%;
  margin-left: -10px;
}

#cssmenu>ul ul>li {
  position: relative;
}

#cssmenu ul ul a {  /* This is the drop down menu, change font or size when its drops down */
  color: rgb(50, 50, 50);
  font-family: Verdana, 'Lucida Grande';
  font-size: 13px;
  background-color: rgb(250, 250, 250);
  padding: 5px 8px 7px 16px;
  display: block;
  -webkit-transition: background-color .1s;
  -moz-transition: background-color .1s;
  -o-transition: background-color .1s;
  transition: background-color .1s;
}

#cssmenu ul ul a:hover {
  background-color: rgb(240, 240, 240);
}

#cssmenu ul ul ul {  /* In this build i havent included a sub sub menu in, but here is the code if ever needed */
  visibility: hidden;
  opacity: 0;
  position: absolute;
  top: -16px;
  left: 206px;  /* This is for a sub sub menu */
  padding: 16px 0 20px 0;
  background-color: rgb(250, 250, 250);
  text-align: left;
  width: 160px;
  -webkit-transition: all .3s;
  -moz-transition: all .3s;
  -o-transition: all .3s;
  transition: all .3s;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  border-radius: 5px;
  -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, .4);
  -moz-box-shadow: 0px 1px 3px rgba(0, 0, 0, .4);
  box-shadow: 0px 1px 3px rgba(0, 0, 0, .4);
}

#cssmenu ul ul>li:hover>ul {
  opacity: 1;
  left: 196px;
  visibility: visible;
}

#cssmenu ul ul a:hover {
  background-color: rgb(114, 164, 65);
  color: rgb(240, 240, 240);
}

#wrapper #page #page-bgtop #page-bgbtm #content .post .entry table tr td {
  text-align: center;
}
<div id='cssmenu'>
  <ul>
    <li class='active'><a href='index.html'><span>Home</span></a></li>
    <li class='has-sub'><a href='#'><span>About Us</span></a>
      <ul>
        <li class='has-sub'><a href='history.html'><span>History Of Elvyn</span></a></li>
        <li class='has-sub'><a href='lifeinelvyn.html'><span>Life In Elvyn</span></a></li>
        <li class='has-sub'><a href='committee.html'><span>Our Committee</span></a></li>
        <li class='has-sub'><a href='warden.html'><span>The Warden Team</span></a></li>
        <li class='has-sub'><a href='http://www.lboro.ac.uk/services/campus-living/food-drink/halldiningfooddiaries/cateredhallmenu/' target="_blank"><span>Catered Menu</span></a></li>
      </ul>
      <li><a href='events.html'><span>Events</span></a></li>
      <li class='has-sub'><a href='#'><span>Media</span></a>
        <ul>
          <li class='has-sub'><a href='mediaaboutus.html'><span>About Us</span></a></li>
          <li class='has-sub'><a href='mediasubcommittee.html'><span>Sub-Committee</span></a></li>
          <li class='has-sub'><a href='https://www.facebook.com/ElvynRichardsMedia#' target="_blank"><span>Elvyn Images</span></a></li>
          <li class='has-sub'><a href='http://www.youtube.com/channel/UCyKYhzsknhggkykoZR9KC-g/videos?flow=grid&view=0' target="_blank"><span>Elvyn TV</span></a></li>
          <li class='has-sub'><a href='elvynapp.html'><span>Elvyn App</span></a></li>
          <ul>
          </ul>
        </ul>
  </ul>
</div>
#cssmenu ul {
  margin: 0;
  padding:0;
}

#cssmenu li {
  margin: 0;
  padding: 0;
}

#cssmenu a {
  margin: 0;
  padding: 0;
}

#cssmenu ul {
  list-style: none;
}

#cssmenu a {
  text-decoration: none;
}

#cssmenu {
  /* UPDATE  1/2 */display:flex;
  /* UPDATE  2/2 */justify-content:center;
  height: 70px;  /* This is for the main menu bit at the top */
  width: 100%;  /* This means on every screen no matter the size, the width will cover the top  */
  line-height: normal;
  text-align: center;
  background-color: rgb(35, 35, 35);
  box-shadow: 0px 2px 3px rgba(0, 0, 0, .4);
  /*vertical-align: middle;*/
}

#cssmenu>ul>li {
  float: left;
  margin-left: 15px;  /* This is when the drop down box appears */
  position: relative;
}

#cssmenu>ul>li>a {
  color: rgb(160, 160, 160);
  font-family: Verdana, 'Lucida Grande';
  font-size: 14px;
  line-height: 70px;  /* This bit chances the size of the text on the main heading */
  padding: 15px 24px; /* This is the padding between the different titles */
  -webkit-transition: color .15s;
  -moz-transition: color .15s;
  -o-transition: color .15s;
  transition: color .15s;
}

#cssmenu>ul>li>a:hover {
  color: rgb(250, 250, 250);
}

#cssmenu>ul>li>ul {
  opacity: 0;
  visibility: hidden;
  padding: 16px 0 20px 0;
  background-color: rgb(250, 250, 250);
  text-align: left;  /* This is for the text when box is dropped down, centered isnt always totally in the middle so best to have on the left */
  position: absolute;
  top: 55px;  /* This is for the drop down annimation */
  left: 50%;
  margin-left: -90px;
  width: 180px;
  -webkit-transition: all .3s .1s;
  -moz-transition: all .3s .1s;
  -o-transition: all .3s .1s;
  transition: all .3s .1s;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  border-radius: 5px;
  -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, .4);
  -moz-box-shadow: 0px 1px 3px rgba(0, 0, 0, .4);
  box-shadow: 0px 1px 3px rgba(0, 0, 0, .4);
}

#cssmenu>ul>li:hover>ul {
  opacity: 1;
  top: 65px;  /* This is how far from the top the drop down annimation will go  */
  visibility: visible;
}

#cssmenu>ul>li>ul:before {
  content: '';
  display: block;
  border-color: transparent transparent rgb(250, 250, 250) transparent;
  border-style: solid;
  border-width: 10px;  /* The border on the drop down box  */
  position: absolute;
  top: -20px;
  left: 50%;
  margin-left: -10px;
}

#cssmenu>ul ul>li {
  position: relative;
}

#cssmenu ul ul a {  /* This is the drop down menu, change font or size when its drops down */
  color: rgb(50, 50, 50);
  font-family: Verdana, 'Lucida Grande';
  font-size: 13px;
  background-color: rgb(250, 250, 250);
  padding: 5px 8px 7px 16px;
  display: block;
  -webkit-transition: background-color .1s;
  -moz-transition: background-color .1s;
  -o-transition: background-color .1s;
  transition: background-color .1s;
}

#cssmenu ul ul a:hover {
  background-color: rgb(240, 240, 240);
}

#cssmenu ul ul ul {  /* In this build i havent included a sub sub menu in, but here is the code if ever needed */
  visibility: hidden;
  opacity: 0;
  position: absolute;
  top: -16px;
  left: 206px;  /* This is for a sub sub menu */
  padding: 16px 0 20px 0;
  background-color: rgb(250, 250, 250);
  text-align: left;
  width: 160px;
  -webkit-transition: all .3s;
  -moz-transition: all .3s;
  -o-transition: all .3s;
  transition: all .3s;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  border-radius: 5px;
  -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, .4);
  -moz-box-shadow: 0px 1px 3px rgba(0, 0, 0, .4);
  box-shadow: 0px 1px 3px rgba(0, 0, 0, .4);
}

#cssmenu ul ul>li:hover>ul {
  opacity: 1;
  left: 196px;
  visibility: visible;
}

#cssmenu ul ul a:hover {
  background-color: rgb(114, 164, 65);
  color: rgb(240, 240, 240);
}

#wrapper #page #page-bgtop #page-bgbtm #content .post .entry table tr td {
  text-align: center;
}
<div id='cssmenu'>
  <ul>
    <li class='active'><a href='index.html'><span>Home</span></a></li>
    <li class='has-sub'><a href='#'><span>About Us</span></a>
      <ul>
        <li class='has-sub'><a href='history.html'><span>History Of Elvyn</span></a></li>
        <li class='has-sub'><a href='lifeinelvyn.html'><span>Life In Elvyn</span></a></li>
        <li class='has-sub'><a href='committee.html'><span>Our Committee</span></a></li>
        <li class='has-sub'><a href='warden.html'><span>The Warden Team</span></a></li>
        <li class='has-sub'><a href='http://www.lboro.ac.uk/services/campus-living/food-drink/halldiningfooddiaries/cateredhallmenu/' target="_blank"><span>Catered Menu</span></a></li>
      </ul>
      <li><a href='events.html'><span>Events</span></a></li>
      <li class='has-sub'><a href='#'><span>Media</span></a>
        <ul>
          <li class='has-sub'><a href='mediaaboutus.html'><span>About Us</span></a></li>
          <li class='has-sub'><a href='mediasubcommittee.html'><span>Sub-Committee</span></a></li>
          <li class='has-sub'><a href='https://www.facebook.com/ElvynRichardsMedia#' target="_blank"><span>Elvyn Images</span></a></li>
          <li class='has-sub'><a href='http://www.youtube.com/channel/UCyKYhzsknhggkykoZR9KC-g/videos?flow=grid&view=0' target="_blank"><span>Elvyn TV</span></a></li>
          <li class='has-sub'><a href='elvynapp.html'><span>Elvyn App</span></a></li>
          <ul>
          </ul>
        </ul>
  </ul>
</div>
#cssmenu ul {
  margin: 0 ;
  padding:0;
}

#cssmenu li {
  margin: 0;
  padding: 0;
}

#cssmenu a {
  margin: 0;
  padding: 0;
}

#cssmenu ul {
  list-style: none;
}

#cssmenu a {
  text-decoration: none;
}

#cssmenu {
  /* UPDATE  1/2 */display:grid;
  /* UPDATE  2/2 */justify-content:center;
  height: 70px;  /* This is for the main menu bit at the top */
  width: 100%;  /* This means on every screen no matter the size, the width will cover the top  */
  line-height: normal;
  text-align: center;
  background-color: rgb(35, 35, 35);
  box-shadow: 0px 2px 3px rgba(0, 0, 0, .4);
  vertical-align: middle;
}

#cssmenu>ul>li {
  float: left;
  margin-left: 15px;  /* This is when the drop down box appears */
  position: relative;
}

#cssmenu>ul>li>a {
  color: rgb(160, 160, 160);
  font-family: Verdana, 'Lucida Grande';
  font-size: 14px;
  line-height: 70px;  /* This bit chances the size of the text on the main heading */
  padding: 15px 24px; /* This is the padding between the different titles */
  -webkit-transition: color .15s;
  -moz-transition: color .15s;
  -o-transition: color .15s;
  transition: color .15s;
}

#cssmenu>ul>li>a:hover {
  color: rgb(250, 250, 250);
}

#cssmenu>ul>li>ul {
  opacity: 0;
  visibility: hidden;
  padding: 16px 0 20px 0;
  background-color: rgb(250, 250, 250);
  text-align: left;  /* This is for the text when box is dropped down, centered isnt always totally in the middle so best to have on the left */
  position: absolute;
  top: 55px;  /* This is for the drop down annimation */
  left: 50%;
  margin-left: -90px;
  width: 180px;
  -webkit-transition: all .3s .1s;
  -moz-transition: all .3s .1s;
  -o-transition: all .3s .1s;
  transition: all .3s .1s;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  border-radius: 5px;
  -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, .4);
  -moz-box-shadow: 0px 1px 3px rgba(0, 0, 0, .4);
  box-shadow: 0px 1px 3px rgba(0, 0, 0, .4);
}

#cssmenu>ul>li:hover>ul {
  opacity: 1;
  top: 65px;  /* This is how far from the top the drop down annimation will go  */
  visibility: visible;
}

#cssmenu>ul>li>ul:before {
  content: '';
  display: block;
  border-color: transparent transparent rgb(250, 250, 250) transparent;
  border-style: solid;
  border-width: 10px;  /* The border on the drop down box  */
  position: absolute;
  top: -20px;
  left: 50%;
  margin-left: -10px;
}

#cssmenu>ul ul>li {
  position: relative;
}

#cssmenu ul ul a {  /* This is the drop down menu, change font or size when its drops down */
  color: rgb(50, 50, 50);
  font-family: Verdana, 'Lucida Grande';
  font-size: 13px;
  background-color: rgb(250, 250, 250);
  padding: 5px 8px 7px 16px;
  display: block;
  -webkit-transition: background-color .1s;
  -moz-transition: background-color .1s;
  -o-transition: background-color .1s;
  transition: background-color .1s;
}

#cssmenu ul ul a:hover {
  background-color: rgb(240, 240, 240);
}

#cssmenu ul ul ul {  /* In this build i havent included a sub sub menu in, but here is the code if ever needed */
  visibility: hidden;
  opacity: 0;
  position: absolute;
  top: -16px;
  left: 206px;  /* This is for a sub sub menu */
  padding: 16px 0 20px 0;
  background-color: rgb(250, 250, 250);
  text-align: left;
  width: 160px;
  -webkit-transition: all .3s;
  -moz-transition: all .3s;
  -o-transition: all .3s;
  transition: all .3s;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  border-radius: 5px;
  -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, .4);
  -moz-box-shadow: 0px 1px 3px rgba(0, 0, 0, .4);
  box-shadow: 0px 1px 3px rgba(0, 0, 0, .4);
}

#cssmenu ul ul>li:hover>ul {
  opacity: 1;
  left: 196px;
  visibility: visible;
}

#cssmenu ul ul a:hover {
  background-color: rgb(114, 164, 65);
  color: rgb(240, 240, 240);
}

#wrapper #page #page-bgtop #page-bgbtm #content .post .entry table tr td {
  text-align: center;
}
<div id='cssmenu'>
  <ul>
    <li class='active'><a href='index.html'><span>Home</span></a></li>
    <li class='has-sub'><a href='#'><span>About Us</span></a>
      <ul>
        <li class='has-sub'><a href='history.html'><span>History Of Elvyn</span></a></li>
        <li class='has-sub'><a href='lifeinelvyn.html'><span>Life In Elvyn</span></a></li>
        <li class='has-sub'><a href='committee.html'><span>Our Committee</span></a></li>
        <li class='has-sub'><a href='warden.html'><span>The Warden Team</span></a></li>
        <li class='has-sub'><a href='http://www.lboro.ac.uk/services/campus-living/food-drink/halldiningfooddiaries/cateredhallmenu/' target="_blank"><span>Catered Menu</span></a></li>
      </ul>
      <li><a href='events.html'><span>Events</span></a></li>
      <li class='has-sub'><a href='#'><span>Media</span></a>
        <ul>
          <li class='has-sub'><a href='mediaaboutus.html'><span>About Us</span></a></li>
          <li class='has-sub'><a href='mediasubcommittee.html'><span>Sub-Committee</span></a></li>
          <li class='has-sub'><a href='https://www.facebook.com/ElvynRichardsMedia#' target="_blank"><span>Elvyn Images</span></a></li>
          <li class='has-sub'><a href='http://www.youtube.com/channel/UCyKYhzsknhggkykoZR9KC-g/videos?flow=grid&view=0' target="_blank"><span>Elvyn TV</span></a></li>
          <li class='has-sub'><a href='elvynapp.html'><span>Elvyn App</span></a></li>
          <ul>
          </ul>
        </ul>
  </ul>
</div>
1
G-Cyr