alignment - CSS align text left in center div with automatic line break -
there quite few answers similar topic, none of helped me problem.
what i'd have list of horizontal items (for menu), 100% width of parent (for used flex
).
text inside items should break automatically (without <br />
, don't know texts in advance) aligned left , broken box should in middle of item. when hovered (as shown in example), entire item (including paddings) should change background color.
paddings left , right inside elements should method determined automatically, menu responsive (on mobile padding 0 , or large screens accordingly bigger).
i've attached simplified snippet of closest thing got desired result. no matter how change html structure or css, can't left align text when items centered (this overrides left align).
but not care if result different, long work without without manual work every item :).
i'd appreciate help! thanks!
* { margin: 0; padding: 0; } ul { /* simulate small screen */ width: 500px; display: flex; list-style: none; background: aqua; } ul li { padding: 10px 0; border-left: 1px solid red; flex-grow: 1; flex-shrink: 1; text-align: center; } ul li div { text-align: left; margin: 0 auto; } ul li:hover { background: yellow; }
<ul> <li> <div>menu item</div> </li> <li> <div>menu item name</div> </li> <li> <div>menu item</div> </li> <li> <div>menu</div> </li> <li> <div>menu item</div> </li> <li> <div>menu item name</div> </li> <li> <div>menu item</div> </li> </ul>
wanted result (forth element wrong, image fixed hand show correct result):
you can either use library such bootstrap create responsive element or can put elements within table have width of screen , table handle positioning , sizing you.
<table style="width: 100%"> <tr> <td>item 1</td> <td>item 2</td> <td>item 3</td> <td>item 4</td> </tr> <table>
Comments
Post a Comment