#javascript #jquery #html #css
#javascript #jquery #HTML #css
Вопрос:
Я хочу добавить цветовой стиль в <div>
теги.
Это работает только при использовании свойства:
`background-color`: orange;
Но я хочу, чтобы был изменен только текст, а не фон.
Вот так:
`color`: orange;
В этой демонстрации не нужно, чтобы Javascript все еще работал.
Моя демонстрация здесь:
function firefoxFix() {
if ( /firefox/.test( window.navigator.userAgent.toLowerCase() ) ) {
var tds = document.getElementsByTagName( 'td' );
for( var index = 0; index < tds.length; index ) {
tds[index].innerHTML = '<div class="ff-fix">' tds[index].innerHTML '</div>';
};
var style = '<style>'
'td { padding: 0 !important; }'
'td:hover::before, td:hover::after { background-color: transparent !important; }'
'</style>';
document.head.insertAdjacentHTML( 'beforeEnd', style );
};
};
firefoxFix();
table {
border-spacing: 0;
border-collapse: collapse;
overflow: hidden;
z-index: 1;
}
td, th, .ff-fix {
cursor: pointer;
padding: 10px;
position: relative;
}
td:hover::after,
.ff-fix:hover::after {
background-color: orange;
content: '0a0';
height: 10000px;
left: 0;
position: absolute;
top: -5000px;
width: 100%;
z-index: -1;
}
<table>
<tbody>
<tr>
<td>20</td><td>21</td><td>23</td><td>25</td><td>27</td>
</tr>
<tr>
<td>18</td><td>20</td><td>22</td><td>24</td><td>26</td>
</tr>
<tr>
<td>17</td><td>19</td><td>21</td><td>23</td><td>25</td>
</tr>
<tr>
<td>16</td><td>18</td><td>20</td><td>22</td><td>24</td>
</tr>
</tbody>
</table>
Спасибо.
Комментарии:
1. CSS был разработан американцами, которые не знают, как пишется «color», поэтому имя свойства —
color
.2. Вы хотите установить
color
вместоbackground
?3. Да, я хочу установить
color
текста вместоbackground-color
ячеек.4. Вы хотите менять цвет только при наведении курсора мыши на определенный столбец? верно?
5. @w3debugger . Правильно. Вы можете видеть в моем демонстрационном коде. Измените цвет текста в ячейке (часть определенного столбца) вместо изменения цвета фона в ячейке (часть определенного столбца).
Ответ №1:
Я думаю, лучший подход — добавить класс к элементу html, когда пользователь использует firefox. Для этого вы можете использовать анонимную функцию, например:
(function(html) {
if ( /firefox/.test( window.navigator.userAgent.toLowerCase() ) ) {
html.classList.add('is-firefox');
}
})(document.documentElement);
Затем вы можете добавить css для этого класса:
.is-firefox td {
color: orange;
}
Работает jsFiddle. Протестировано в Chrome 54 и Firefox 45.
Вы также можете попробовать это исправление css без какого-либо javascript, например:
@-moz-document url-prefix() {
td {
color: orange;
}
}
Здесь у вас есть еще немного информации о взломах CSS:https://www.wired.com/2010/02/browser-specific_css_hacks /
Комментарии:
1. Я пишу это, работая во всех браузерах, кроме IE 9-. И я попробовал ваш код, но он не работает.
2. кажется, не работает. Я попробовал вашу скрипку. Он отображает только текст:
Test
. Я не думаю, что это означает?3. ДА. ‘Test’ черный в Chrome и оранжевый в Firefox. Изменение цвета в firefox было вашей проблемой?
4. Я понимаю. Вы, кажется, ошибаетесь; я не различаю Chrome или Firefox. Я только хочу: когда пользователь наводит курсор на определенные столбцы, он автоматически выделяет текст этого столбца оранжевым. В настоящее время я меняю только цвет фона успеха. Вы понимаете мои проблемы? Спасибо.
Ответ №2:
Вы можете добавить a className
ко всем td
элементам при event.target
.cellIndex
событии mouseover
at className
, удалить td
из всех mouseleave
элементов при, событие
var elems = document.querySelectorAll("td");
var elemParents = document.querySelectorAll("tr")
for (var td of elems) {
td.addEventListener("mouseover", function(e) {
var index = e.target.cellIndex;
for (let tr of elemParents) {
tr.querySelectorAll("td")[index]
.className = "color";
}
});
td.addEventListener("mouseleave", function(e) {
for (let tr of elemParents) {
for (var cell of tr.querySelectorAll("td")) {
cell.className = "";
}
}
})
}
function firefoxFix() {
if (/firefox/.test(window.navigator.userAgent.toLowerCase())) {
var tds = document.getElementsByTagName('td');
for (var index = 0; index < tds.length; index ) {
tds[index].innerHTML = '<div class="ff-fix">' tds[index].innerHTML '</div>';
};
var style = '<style>' 'td { padding: 0 !important; }' 'td:hover::before, td:hover::after { background-color: transparent !important; }' '</style>';
document.head.insertAdjacentHTML('beforeEnd', style);
};
};
firefoxFix();
.color {
color: orange;
}
table {
border-spacing: 0;
border-collapse: collapse;
overflow: hidden;
z-index: 1;
}
td,
th,
.ff-fix {
cursor: pointer;
padding: 10px;
position: relative;
}
td:hover::after,
.ff-fix:hover::after {
background-color: blue;
content: '0a0';
height: 10000px;
left: 0;
position: absolute;
top: -5000px;
width: 100%;
z-index: -1;
}
<table>
<tbody>
<tr>
<td>20</td>
<td>21</td>
<td>23</td>
<td>25</td>
<td>27</td>
</tr>
<tr>
<td>18</td>
<td>20</td>
<td>22</td>
<td>24</td>
<td>26</td>
</tr>
<tr>
<td>17</td>
<td>19</td>
<td>21</td>
<td>23</td>
<td>25</td>
</tr>
<tr>
<td>16</td>
<td>18</td>
<td>20</td>
<td>22</td>
<td>24</td>
</tr>
</tbody>
</table>
Комментарии:
1. Простой ответ и полезный. Ты спас мне жизнь. Спасибо.
Ответ №3:
Привет, попробуйте это ниже
$('td').hover(function() {
var t = parseInt($(this).index()) 1;
$('td:nth-child(' t ')').addClass('highlighted');
},
function() {
var t = parseInt($(this).index()) 1;
$('td:nth-child(' t ')').removeClass('highlighted');
});
table, td {
border: 1px solid black;
}
td {
width: 40px;
height: 40px;
}
.highlighted {
color:orange;
background-color:black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td>aa</td>
<td>aa</td>
<td>aa</td>
<td>aa</td>
</tr>
<tr>
<td>aa</td>
<td>aa</td>
<td>aa</td>
<td>aa</td>
</tr>
<tr>
<td>aa</td>
<td>aa</td>
<td>aa</td>
<td>aa</td>
</tr>
<tr>
<td>aa</td>
<td>aa</td>
<td>aa</td>
<td>aa</td>
</tr>
</table>
Комментарии:
1. Он сказал, что братан из столбца.
Ответ №4:
Вы можете вызывать функцию при наведении курсора мыши на каждую ячейку следующим образом :
function a(ele){ //On mouse over
ele.style.color = 'orange';
}
function b(ele){ // On mouse out
ele.style.color = 'grey';
}
Комментарии:
1. Что значит? Я думаю, вам следует добавить больше кода, чтобы ваш ответ был ясен.