#html #css
#HTML #css
Вопрос:
Я нашел код боковой панели, который я сейчас использую:
#sidebar {
position: fixed;
z-index: 10;
left: 0;
top: 0;
height: 100%;
width: 60px;
background: #fff;
border-right: 1px solid #ddd;
text-align: center;
}
#sidebar a {
text-decoration: none;
display: block;
padding: 20px 0 20px 0px;
color: #000000;
letter-spacing: 1px;
}
#sidebar a:hover {
background-color: rgba(255, 255, 255, 0.1);
color: black !important;
}
#sidebar a:hover,
#sidebar a.active {
text-decoration: none;
background: #4caf50;
color: black;
}
#sidebar a.active {
background: #00ff00;
}
<div id="sidebar">
<center>
<img width="80%" height="10%" src="https://img.pngio.com/download-for-free-10-png-gold-star-png-icon-top-images-at-carlisle-small-gold-star-icon-png-512_512.png"/>
</center><br>
<a href="one.php">1️⃣</a>
<a href="two.php">2️⃣</a>
<a href="three.php">3️⃣</a>
</div>
Я хочу добавить текст на боковую панель следующим образом:
<div id="sidebar"><br>
<center>
<img width="80%" height="10%" src="https://img.pngio.com/download-for-free-10-png-gold-star-png-icon-top-images-at-carlisle-small-gold-star-icon-png-512_512.png"/>
</center><br>
<a href="one.php">1️⃣ Number one</a>
<a href="two.php">2️⃣< Number two/a>
<a href="three.php">3️⃣ Number three</a>
</div>
- Но я хочу, чтобы текст отображался только при наведении курсора мыши на боковую панель. Итак, не зависая, это небольшая боковая панель только с символами, а при наведении курсора она увеличивается и отображает текст. Как я могу это сделать?
Ответ №1:
Вам нужно будет сделать пару вещей, чтобы заставить это работать:
- Оберните текст в элемент, на который можно настроить таргетинг
hover
- Переместите ширину от
#sidebar
к фактическомуa
элементу
@keyframes over {
0% {
opacity: 0;
margin-left: -99em;
}
50% {
opacity: 0;
margin-left: 15px;
}
100% {
opacity: 1;
margin-left: 15px;
}
}
#sidebar {
position: fixed;
z-index: 10;
left: 0;
top: 0;
height: 100%;
background: #fff;
border-right: 1px solid #ddd;
}
#sidebar img {
width: 40px;
height: auto;
display: block;
margin-left: 3px;
/* margin: 0 auto; <-- centers on hover too */
}
#sidebar #nav-items {
width: 100%;
}
#sidebar #nav-items a {
color: black;
display: flex;
padding: 20px;
text-decoration: none;
}
#sidebar #nav-items a span {
display: inline-block;
margin-left: -999rem;
}
#sidebar #nav-items:hover a span {
text-decoration: none;
font-size: inherit;
animation-name: over;
animation-duration: .5s;
animation-fill-mode: forwards;
}
#sidebar #nav-items a:active,
#sidebar #nav-items a:hover {
text-decoration: none;
background: #4caf50;
color: black;
}
#sidebar #nav-items a:active {
background: #00ff00;
}
<div id="sidebar">
<img src="https://img.pngio.com/download-for-free-10-png-gold-star-png-icon-top-images-at-carlisle-small-gold-star-icon-png-512_512.png" />
<div id="nav-items">
<a href="one.php">1️⃣ <span>Some text here longer and this is here</span></a>
<a href="two.php">2️⃣ <span>Some text here</span></a>
<a href="three.php">3️⃣ <span>Some text here</span></a>
</div>
</div>
Комментарии:
1. При добавлении изображения в верхнюю часть боковой панели:
<img width="80%" height="10%" class="imgShake" src="img/pebble.png"/>
боковая панель занимает 50% экрана, а изображение становится огромным. Почему это?2. Потому что добавление
position: fixed
выводит#sidebar
из потока документов и относится к телу (за некоторыми исключениями), а не к его контейнеру. Итак, когда вы добавили изображение, ширина боковой панели равна 80% от собственного размера вашего изображения. В этой конкретной ситуации вам лучше придать изображению фиксированный размер иheight: auto
в вашем CSS. Но вам нужно будет предоставить больше HTML / CSS для вашего конкретного случая.3. Теперь обновленный вопрос 🙂
4. Я обновил свой ответ. Кроме того, не используйте
<center>
теги. Они давно устарели.5. Потрясающе, спасибо! Но как я могу центрировать ее без использования
<center>
тегов? Я всегда ими пользовался.
Ответ №2:
решение:
#sidebar {
position: fixed;
z-index: 10;
left: 0;
top: 0;
height: 100%;
width: 60px;
background: #fff;
border-right: 1px solid #ddd;
transition: all .3s ease-in-out;
overflow: hidden;
}
#sidebar:hover {
width: 160px;
}
#sidebar a {
text-decoration: none;
display: block;
padding: 20px 20px;
color: #000000;
letter-spacing: 1px;
font-size: 14px;
font-weight: bold;
font-family: Arial;
width: 30px;
white-space: nowrap;
transition: all .2s ease-in-out;
}
#sidebar a span {
opacity: 0;
transition: all .2s ease-in-out;
}
#sidebar:hover a span {
opacity: 0.2
}
#sidebar a:hover span {
opacity: 1;
}
#sidebar a:hover {
background-color: rgba(255, 255, 255, 0.1);
color: black !important;
width: 150px;
}
#sidebar a:hover,
#sidebar a.active {
text-decoration: none;
background: #4caf50;
color: black;
}
#sidebar a.active {
background: #00ff00;
}
<div id="sidebar">
<a href="one.php">1️⃣ <span>Number one</span></a>
<a href="two.php">2️⃣ <span>Number two</span></a>
<a href="three.php">3️⃣ <span>Number three</span></a>
</div>
Комментарии:
1. Этот ответ хорош, если весь текст имеет одинаковую ширину, что является большим предположением. Вы не можете гарантировать, что это
width: 150px;
будет точным.2. @Em an, что насчет изображения? И текст имеет разную ширину, поэтому
width: 150px;
не будет точным, как сказал @disinfor.