Я округлил свои кнопки с помощью CSS, и теперь они каскадно

0

Я использовал два параметра границы, чтобы объединить различные кнопки на моем сайте, и из-за этого они теперь каскадируются примерно на один разрыв строки. (См. Изображение: http://gyazo.com/14af343dea8b280262f6c88465659c42)

HTML и CSS практически одинаковы для каждой кнопки, поэтому я разместил пример. Любые идеи о том, почему это происходит (я думаю, это теги div) и как я могу это остановить?

EDIT - JS Загрузка скрипта: http://jsfiddle.net/4phcS/

CSS:

#linkwordpress
{
    color:white;
    background-color:#5C0DAC;
    font-family:Arial, Sans-Serif;
    font-size:18px;
    text-align:center;
    width:100px;
    height:30px;
    position:relative;
    top:-90px;
    left:500px;
    line-height:28px;
    border:2px solid;
    border-radius:25px;
}

HTML:

<div id="linkwordpress">
    <a href="../wordpress">Wordpress</a>
</div>
  • 0
    Какова разметка, включая ваши кнопки и связанные с ними CSS? Трудно сказать, в чем проблема, не имея больше кода.
  • 0
    Что вы подразумеваете под cascade ?
Показать ещё 4 комментария
Теги:

3 ответа

0
Лучший ответ

Ваш вопрос немного расплывчатый, но если бы я должен был догадаться, я бы сказал, что тот факт, что вы используете div, вероятно, почему.

Divs по сути имеют display:block. Попробуйте изменить отображение на inline или inline-block.

#linkwordpress
{
    color:white;
    background-color:#5C0DAC;
    font-family:Arial, Sans-Serif;
    font-size:18px;
    text-align:center;
    width:100px;
    height:30px;
    position:relative;
    top:-90px;
    left:500px;
    line-height:28px;
    border:2px solid;
    border-radius:25px;
    display:inline;
}

или если ваш id #linkwordpress - это просто контейнер, добавьте его display:inline; или display:inline-block; к anchor внутри div вместо этого так:

#linkwordpress a {
    display:inline-block;
    }

Лучшим решением было бы удалить <div> со всех якорей целиком и устранить проблему, с которой вы страдаете, с помощью свойства display. Как это:

    <nav>
    <div>
        <a class="Menu-Item" href="#">Home</a>
        <a class="Menu-Item" href="about.html">About</a>
        <a class="Menu-Item" href="cv.html">CV</a>
        <a class="Menu-Item" href="../wordpress">Wordpress</a>
        <a class="Menu-Item" href="../webshop/catalog">Webshop</a>
    </div>

EDIT: после изучения вашего кода я заметил несколько проблем, с которыми вы столкнулись, которые нарушали навигацию. Я прикрепил новый JSFiddle, который, как я думаю, выполняет то, что вы ищете, и попытается объяснить некоторые из приведенных ниже изменений:

http://jsfiddle.net/Incredulous/j4ZbT/

У вас были свободные плавающие элементы в вашем <div id="container"> которые нужно было поместить в другой div и обработать как столбец.

Я добавил 2 divs к вашему коду:

<div id="col2">
    <div id="sideboxhead">Who am I?</div>
    <!-- lots of content here -->
</div>
<div id="col1">
    <div id="header2">Home</div>
    <!-- lots of content here -->
</div>

Затем добавили соответствующий CSS, чтобы рассматривать их как столбцы:

#col1 { float:left;width:644px;}
#col2 { float:right; width:145px;}

Я также изменил все свойства width #col1 в #col1 чтобы #col1 этого применить width ко всему столбцу.

Я удалил весь ваш top:XXpx; потому что вы искусственно пытались создать/уменьшить пространство и вместо этого добавили значение margin в элемент nav который может быть отрицательным.

Наконец, я удалил все ваши left значения и вместо этого добавил float в столбцы. Если вам по-прежнему требуется смещение области содержимого центра, вы можете добавить еще один контейнер div в оба #col2 и #col1, уменьшите его ширину, а затем измените ширину #col1 на разницу старой ширины - новой ширины.

Надеюсь это поможет.

  • 0
    Извините, я очень новичок в HTML и возиться. Блок Inline портит тело моей страницы и по какой-то причине выбрасывает некоторые мои кнопки в угол, тогда как Inline просто сжимает кнопку до ее наименьшего размера.
  • 0
    Нам нужно увидеть вашу страницу, я вижу из вашего кода, что у вас есть width:800px; что звучит для меня гораздо больше, как контейнер, который должен содержать ваши отдельные кнопки.
Показать ещё 8 комментариев
1

Не используйте id (#), используйте классы следующим образом:

.header {
  color:white;
  text-align:center;
  background-color:#5C0DAC;
  font-family:Arial, Sans-Serif;
  font-size:30px;
  padding:0px;
  margin-bottom:10px;
  height:38px;
  width:800px;
  border:2px solid;
  border-radius:25px;
  display: inline-block;
}

И используйте display: inline-block.

<div class="header">
       Leon CS150 Assignment
</div>
<div class="header">
       Leon CS150 Assignment 2
</div>
  • 0
    Все, что это делает, это отодвигает мои кнопки к списку элементов, и даже тогда это перекрывает мое основное тело?
  • 0
    Что вы имеете в виду под наложением? Пожалуйста, опубликуйте полный код через jsfiddle или хотя бы сделайте скриншот.
Показать ещё 1 комментарий
0

Обновить:

После прочтения вашего комментария причина, по которой ваши объекты являются вертикальными, а не горизонтальными, состоит в том, что для элемента, содержащего вашу навигацию, требуется один из этих двух тегов:

  • display: inline;
  • display: inline-block;

Эти два элемента заставляют элементы оставаться на одной линии, а не постоянно переходить на новую строку. Подумайте о кукле-гнезде, каждая кукла - это однослойное глубокое погружение дальше и дальше в куклу. То же самое относится к html, поэтому для того, чтобы противодействовать тому, что падение линии на элемент вы изменяете размеры, поплавок или отображение, чтобы удовлетворить дизайн цели.


Я все еще не совсем уверен, что вы пытаетесь создать или сделать. Является ли это более сложным, что вы пытаетесь выполнить? скрипка

Когда вы смотрите на код, это не так уж сильно отличается от вашего. Одно из главных отличий заключается в том, что nav - это просто div но он привязывается к родительскому элементу. В этом случае header. Поэтому я определяю этот элемент как position: absolute; что позволит более точно контролировать всю структуру меню.

Затем для большого меню и рефакторинга иногда лучше использовать div над традиционной ul или plain a href. Это добавит более высокий уровень контроля еще раз над структурой вашего меню.

Также вы заметите, что я не использую Id. Это потому, что Id разрешен только на одной странице, он уникален. Это означает, что его нельзя использовать более одного раза. class может быть, что является более встроенным для повторяющихся значений на всей странице.

Я все еще не совсем уверен в вашей цели и плохой формулировке вопроса, но, надеюсь, это указывает на правильное направление:

header {
    width: 100%;
    height: 100px;

    background: #5C0DAC;
}

h3 {
    font-family: Arial, Sans-Serif;
    color: white;
    text-align: center;
}

nav {
    width: 100%;
    height: 10%;

    position: absolute;
    left: 85px;
}

.Menu-Item {
    width: 100px;
    height: 30px;

    padding: 10px 35px;
    border-radius: 25px;

    display: inline;
    margin: 0px 15px;
    box-shadow: 0px 3px 6px 0px;
    position: relative;
}

a {
    font-family: Arial, Sans-Serif;
    text-align: center;  
    line-height: 28px;
    color: white;
}

html:

<header>
    <h3>Leon CS150 Assignment</h3>
    <nav>
        <div class="Menu-Item">
            <a href="#">Home</a>
        </div>

        <div class="Menu-Item">
            <a href="#">About</a>
        </div>

        <div class="Menu-Item">
            <a href="#">CV</a>
        </div>

        <div class="Menu-Item">
            <a href="#">Wordpress</a>
        </div>

        <div class="Menu-Item">
            <a href="#">Webshop</a>
        </div>
    </nav>
</header>
  • 0
    Да спасибо. Мне жаль, что мой вопрос наткнулся на столь запутанный.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню