How can I write 'a:hover' in inline CSS?
You cannot directly write a:hover as inline CSS (e.g., using the style attribute on an <a> element). Inline CSS doesn’t allow pseudo-classes. To style :hover, you must use either an external stylesheet, an internal <style> block, or a JavaScript workaround.
Why Inline CSS Can’t Handle :hover
HTML’s style attribute applies styles directly to that element, but pseudo-classes (like :hover) need a selector that the browser evaluates in real time (i.e., when a user hovers). Inline CSS has no mechanism to express states such as hovering or focus.
Example of What Doesn’t Work
<a href="#" style=":hover { color: red; }">Hover over me</a> <!-- This is invalid and won't do anything. -->
Workarounds
1. Use an Internal or External Stylesheet
Instead of inline, define a rule in <style> or an external .css file:
Internal <style> example:
<html> <head> <style> a:hover { color: red; } </style> </head> <body> <a href="#">Hover over me</a> </body> </html>
External CSS file example (styles.css):
a:hover { color: red; }
<link rel="stylesheet" href="styles.css"> <a href="#">Hover over me</a>
- Pros: This is the usual, clean approach for styling.
- Cons: None—this is how CSS is designed to be used.
2. Use JavaScript (On Mouse Events)
If you absolutely must avoid a stylesheet, you could emulate a hover effect with JavaScript event handlers like onmouseover and onmouseout:
<a href="#" onmouseover="this.style.color='red';" onmouseout="this.style.color='';"> Hover over me </a>
- How it works: The inline JavaScript changes the element’s style when the mouse enters and resets it on exit.
- Pros: Purely inline in the sense you don’t need a separate
<style>or.cssfile. - Cons: Mixing JavaScript logic into HTML can reduce maintainability and accessibility. Also, it’s not truly using the
:hoverpseudo-class—just simulating it with events.
Best Practice
Use real CSS for :hover, whether it’s an external stylesheet or an internal <style> block. This approach is more maintainable, more accessible, and follows the semantic separation of concerns between content (HTML) and presentation (CSS).
Conclusion
- You can’t write
a:hoverinline via thestyleattribute. - Use a stylesheet (best practice) or JavaScript event handlers as a workaround if you really need all styling in the HTML.