.b-bullet {
/* стили кружочка со знаком вопроса */
}
.b-bullet:hover .b-bullet__pad,
.b-bullet:focus .b-bullet__pad {
visibility: visible;
}
.b-bullet__pad {
visibility: hidden;
position: absolute;
top: 100%
left: 50%;
margin-left: -100px;
width 200px;
height: 0;
}
.b-bullet__tooltip {
/* стили подсказки */
}
.b-bullet>.b-bullet__pad>.b-bullet__tooltip
>> БЭМ
.grid.grid_size_12
.grid_col.grid__col_size_2.grid__col_size_4mobile
.grid {
display: block;
font-size: 0;
box-sizing: border-box;
min-height: inherit;
max-height: inherit;
height: 100%;
}
/* здесь не нужна вложенность, на класс будут навешиваться другие классы */
/* мы указываем "начинается с класса", чтобы каждый раз не писать .grid__col.grid__col_size_2 а просто писать grid__col2 например */
[class^="grid__col"] {
display: inline-block;
vertical-align: top;
font-size: 1rem; /* постоянно следите за этим размером шрифта, он еще не один раз напомнит о себе */
box-sizing: inherit;
height: 100%;
min-height: inherit;
max-height: inherit;
}
/* циклы */
.grid_col_size_12 .grid__col_size_12 {
width: 100%;
}
.grid_col_size_12 .grid__col_size_6 {
width: 50%;
}
/* и т.д. */
.grid_project_foo {
margin: 0 -8px -16px;
}
.grid_project_foo .grid__col {
padding: 0 8px;
margin-bottom: 16px;
}
<?php
error_reporting(0);
// эмуляция БД - если у вас SQL - это не нужно
$menu = array(
array("id", "parent_id", "level"),
array(1, 0, 0),
array(2, 0, 0),
array(3, 0, 0),
array(4, 0, 0),
array(5, 0, 0),
array(6, 0, 0),
array(7, 0, 0),
array(8, 0, 0),
array(9, 0, 0),
array(10, 0, 0),
array(11, 0, 0),
array(17, 15, 1),
array(18, 15, 1),
array(19, 15, 1),
array(20, 15, 1),
array(21, 15, 1),
array(22, 15, 1),
array(23, 15, 1),
array(17, 1, 2),
array(18, 1, 2),
array(19, 1, 2),
array(20, 1, 2),
array(21, 1, 2),
array(22, 1, 2),
array(23, 1, 2),
array(24, 16, 1),
array(25, 16, 1),
array(26, 16, 1),
array(27, 16, 1),
array(28, 16, 1),
array(24, 2, 2),
array(25, 2, 2),
array(26, 2, 2),
array(27, 2, 2),
array(28, 2, 2),
array(12, 1, 1),
array(13, 1, 1),
array(14, 1, 1),
array(15, 1, 1),
array(16, 2, 1),
);
$columns = array_shift($menu);
$menu = array_map(function ($v) use ($columns) {
return array_combine($columns, array_replace(array_fill(0, count($columns), NULL), $v));
}, $menu);
// сортируем правильно - если у вас SQL - делайте в запросе
usort($menu, function ($a, $b) {
return 0
?: ($a["level"] - $b["level"])
?: ($a["parent_id"] - $b["parent_id"])
?: ($a["id"] - $b["id"]);
});
// выбираем в массив по родителям
$menu_parents = array();
foreach ($menu as $v):
$menu_parents[$v["parent_id"]][] = $v;
endforeach;
// пробегаем каждый элемент собирая потомки по очереди
function tree($arr, $parent_id = 0, &$res = array()) {
foreach ($arr[$parent_id] as $v):
$id = $v["id"];
if (!isset($res[$id])):
$res[$id] = $v;
elseif ($res[$id]["level"] < $v["level"]):
$res[$id] = $v;
endif;
if (isset($arr[$id])):
tree($arr, $id, $res);
endif;
endforeach;
return $res;
}
$menu = tree($menu_parents);
echo "<pre>";
print_r($menu);
<style>
.select__selectitem {...}
.menu__selectitem {...}
</style>
<div class="menu">
<div class="menu__menuitem">
Menu item 3
<div class="select">
<div class="select__selectitem menu__selectitem">option1</div>
<div class="select__selectitem menu__selectitem">option2</div>
</div>
</div>
</div>
<style>
.select_type_in-menu .select__item {...} // БЭМ не_запрещает вложенность, если есть модификатор
</style>
<div class="menu">
<div class="menu__item">
Menu item 3
<div class="select select_type_in-menu">
<div class="select__item">option1</div>
<div class="select__item">option2</div>
</div>
</div>
</div>
<style>
.select__item_type_in-menu {...}
</style>
<div class="menu">
<div class="menu__item">
Menu item 3
<div class="select">
<div class="select__item select__item_type_in-menu">option1</div>
<div class="select__item">option2</div>
</div>
</div>
</div>
<?
$text = <<<TEXT
<scriptsrc=""></script>
<script blablabla src=""></script>
<script src=""></script>
<script blabl abla src="123.js"></script>
<script bla 22bl2 abla src="tanks/tank.js"></script>
TEXT;
$match = array();
$tmp = str_replace("<script", "|script", $text);
preg_match_all('/\|script[^<>]+src=[\'"]([^\'"]+)/ium', $tmp, $match);
echo "<pre>";
print_r($match);