Javascript-форум (https://javascript.ru/forum/)
-   (X)HTML/CSS (https://javascript.ru/forum/xhtml-html-css/)
-   -   ИЕ 8-9 ломает верстку (https://javascript.ru/forum/xhtml-html-css/37538-ie-8-9-lomaet-verstku.html)

Вечный Студент 23.04.2013 18:57

ИЕ 8-9 ломает верстку
 
Всем доброго времени суток. Столкнулся с такой проблемой: в ИЕ8-9 формируется абсолютно неправильная верстка меню, которая не соответствует задуманной. Вложенное меню переползает в основное, при этом не полностью. При этом в ИЕ 7 с этим все в порядке. Я понимаю, объяснил несколько неясно, поэтому смотрите приложенные материалы :)

Итак, в ИЕ 9 имеем следующее:






А нужно получить следующее (Google Chrome):




Код, который выдает ИЕ:

<div class="menu-wrap pie_first-child    ">
      <ul class=" pie_first-child    ">
        <li class=" pie_first-child "><a class=" pie_first-child " href="http://on-shop/index.php?route=common/home">Главная</a></li>
                                    <li class="   ">
                        <a class="active-main pie_first-child   " href="http://on-shop/desktops/">Компьютеры</a>
                                                <ul style="display: none;" class=" ">
                                                                                            <li class=" pie_first-child"><a class=" pie_first-child" href="http://on-shop/index.php?route=product/category&amp;path=20_61">Категория</a></li>
                                      </ul></li>
                                                                                            <li><a class=" pie_first-child" href="http://on-shop/index.php?route=product/category&amp;path=20_62">Категория</a></li>
                                      
                                                                                            <li><a class=" pie_first-child" href="http://on-shop/index.php?route=product/category&amp;path=20_63">Категория</a></li>
                                      
                                                                                            <li><a class=" pie_first-child" href="http://on-shop/index.php?route=product/category&amp;path=20_60">Категория2</a></li>
                                      
                                                                                              <li><a class=" pie_first-child" href="http://on-shop/desktops/pc/"><span class=" pie_first-child">PC</span></a>
                      <ul>
                                                                <li class=" pie_first-child"><a class=" pie_first-child" href="http://on-shop/index.php?route=product/category&amp;path=20_26_59">Моноблоки</a></li>
                                                                </ul>
                                                  </li>
                                                                                            <li><a class=" pie_first-child" href="http://on-shop/desktops/mac/">Mac</a></li>
                                      
                                                    </ul>
                                  
                            <li>
                        <a class=" pie_first-child" href="http://on-shop/index.php?route=product/category&amp;path=18">Ноутбуки</a>
                              </li>
                            <li>
                        <a class=" pie_first-child" href="http://on-shop/index.php?route=product/category&amp;path=25">Компоненты</a>
                              </li>
                            <li>
                        <a class=" pie_first-child" href="http://on-shop/index.php?route=product/category&amp;path=57">Планшеты</a>
                              </li>
              

    <div id="search" class="search">
    <div class="button-search pie_first-child"></div>
        <input onclick="this.value = '';" name="filter_name" value="Поиск" type="text" placeholder="Поиск">
      </div>
</div>


Код, генерирующий разметку:

<div class="main-nav ">
    <div class="menu-wrap">
      <ul>
        <li><a href="<?php echo $home; ?>"><?php echo $text_home; ?></a></li>
        <?php if ($categories) { ?>
        <?php for ($k = 0; $k<4; ++$k) { ?>
          <?php $category = $categories[$k] ?>
          <li>
            <?php if ($category['active']) { ?>
            <a href="<?php echo $category['href']; ?>" class="active-main"><?php echo $category['name']; ?></a>
            <?php } else { ?>
            <a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a>
            <?php } ?>
          <?php if ($category['children']) { ?>
          <?php for ($i = 0; $i < count($category['children']);) { ?>
                <ul>
                  <?php $j = $i + ceil(count($category['children']) / $category['column']); ?>
                  <?php for (; $i < $j; $i++) { ?>
                  <?php if (isset($category['children'][$i])) { ?>
                    <?php if( !$category['children'][$i]['children'] ) { ?>
                  <li><a href="<?php echo $category['children'][$i]['href']; ?>"><?php echo $category['children'][$i]['name']; ?></a></li>
                    <?php } else { ?>
                    <li><a href="<?php echo $category['children'][$i]['href']; ?>"><span><?php echo $category['children'][$i]['name']; ?></span></a>
                      <ul>
                                <?php foreach( $category['children'][$i]['children'] as $menu3item ) { ?>
                                <li><a href="<?php echo $menu3item['href']; ?>"><?php echo $menu3item['name']; ?></a></li>
                                <?php } ?>
                                </ul>
                                <?php } ?>
                  </li>
                  <?php } ?>
                  <?php } ?>
                </ul>
                <?php } ?>
          <?php } ?>
        </li>
        <?php 
       }
      }
       ?>
      </ul>


При этом, если не выводить выпадающие меню, все в порядке. Дело явно в нем (хотя зная ие))

Что было сделано для решения проблемы:
- удалял лишние пробелы и переносы строк
- проверил на "закрытость" все теги

Ничего не помогло. Что еще делать и чем это вызвано, я не знаю. В гугле как то ничего не нашел толкового по этой части.
Спасайте, уважаемые господа форумчане :help:

tropiko 24.04.2013 07:09

Некорректная разметка в итоге:
<div class="menu-wrap pie_first-child    ">
	<ul class=" pie_first-child    ">
		<li class=" pie_first-child ">
			<a class=" pie_first-child " href="http://on-shop/index.php?route=common/home">Главная</a>
		</li>
		<li class="   ">
			<a class="active-main pie_first-child   " href="http://on-shop/desktops/">Компьютеры</a>
			<ul style="display: none;" class=" ">
				<li class=" pie_first-child"><a class=" pie_first-child" href="http://on-shop/index.php?route=product/category&amp;path=20_61">Категория</a></li>
			</ul>
		</li>
		<!-- ... -->
	</ul>
	<!-- WTF? -->
	<li>
		<a class=" pie_first-child" href="http://on-shop/index.php?route=product/category&amp;path=18">Ноутбуки</a>
	</li>
	<!-- ... -->
	
	<div id="search" class="search">
		<div class="button-search pie_first-child"></div>
		<input onclick="this.value = '';" name="filter_name" value="Поиск" type="text" placeholder="Поиск">
	</div>
</div>


Проверяйте PHP-код

Вечный Студент 24.04.2013 17:34

Цитата:

Сообщение от tropiko (Сообщение 247831)

Проверяйте PHP-код

"А слона то я и не заметил" (с). Вот что называется свежий взгляд. Не там закрыл родительский пункт меню! Спасибо большое!


Часовой пояс GMT +3, время: 08:40.