how to make following changes ( table element styling) - html

In my mobile application, I have a in-box message and it's in table format:
Fiddle example
HTML:
<div>
<table>
<tbody>
<tr>
<td class="td1">
<img src="images/inbox_read.png" class="icon">
</td>
<td class="td2"><span>You have received a message</span>
</td>
<td class="td3"><span class="date">13/2/2014 20:02:01</span>
</td>
</tr>
</tbody>
</table>
<div class="seperator-gradient"></div>
</div>
<div>
<table>
<tbody>
<tr>
<td class="td1">
<img src="images/inbox_read.png" class="icon">
</td>
<td class="td2"><span>You have received a message</span>
</td>
<td class="td3"><span class="date">13/2/2014 20:02:01</span>
</td>
</tr>
</tbody>
</table>
<div class="seperator-gradient"></div>
</div>
<div>
<table>
<tbody>
<tr>
<td class="td1">
<img src="images/inbox_read.png" class="icon">
</td>
<td class="td2"><span>You have received a message</span>
</td>
<td class="td3"><span class="date">13/2/2014 20:02:01</span>
</td>
</tr>
</tbody>
</table>
<div class="seperator-gradient"></div>
</div>
CSS:
TABLE {
width: 100%;
text-align: left;
padding: 6px 10px 10px;
}
TABLE .td1 {
width: 30px;
}
TABLE .td2 {
width: 154px;
}
TABLE .td3 {
text-align: right;
background-image: url("../images/more_arrow.png");
background-position: 100% 10px;
background-repeat: no-repeat;
background-size: 10px 15px;
width: 110px;
}
TABLE .sicon {
height: 10px;
width: 10px;
}
.date {
color: #2aa8dc;
float: right;
position: relative;
top: -8px;
font-size: 12px;
text-transform: uppercase;
}
.seperator-gradient {
width: 100%;
height: 1px;
border-bottom: background: #c4c4c4;
/* Old browsers */
background: -moz-linear-gradient(left, #ffffff 0%, #e3e3e3 10%, #b8b8b8 50%, #e3e3e3 90%, #fcfcfc 100%);
/* FF3.6+ */
background: -webkit-gradient(linear, left top, right top, color-stop(0%, #ffffff), color-stop(10%, #e3e3e3), color-stop(50%, #b8b8b8), color-stop(90%, #e3e3e3), color-stop(100%, #fcfcfc));
/* Chrome,Safari4+ */
background: -webkit-linear-gradient(left, #ffffff 0%, #e3e3e3 10%, #b8b8b8 50%, #e3e3e3 90%, #fcfcfc 100%);
/* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(left, #ffffff 0%, #e3e3e3 10%, #b8b8b8 50%, #e3e3e3 90%, #fcfcfc 100%);
/* Opera 11.10+ */
background: -ms-linear-gradient(left, #ffffff 0%, #e3e3e3 10%, #b8b8b8 50%, #e3e3e3 90%, #fcfcfc 100%);
/* IE10+ */
background: linear-gradient(to right, #ffffff 0%, #e3e3e3 10%, #b8b8b8 50%, #e3e3e3 90%, #fcfcfc 100%);
/* W3C */
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#fcfcfc', GradientType=1);
/* IE6-9 */
}
You can shrink your browser size to make it phone's width. Then:
I'd like to make the second td's message not to break to a newline on phone's width(320px), how to achieve this without changing the table's structure:
<td class="td2"><span>You have received a message</span>
</td>
keep all the table width, just make the message show in one line even it exceeds boundary between td2 and td3...is it possible?

So you want it to be cut off? Overlap the date/time? What?
TABLE in your CSS should be lowercase;
and I do not believe width works well on elements (e.g. td's) that are `display: table-cell;
SO
Change:
.td2 {
width: 154px;
}
TO
.td2 span {
display: block;
background-color: green; /* used for demonstration purposes */
width: 200px;/* 154px isn't enough */
}

Related

Hyperlinks create line breaks

im making a website for a Youtube group i am in.
And i have alot of hyperlinks in the div #header-menu.
http://i.snag.gy/rVI8c.jpg
body, html {
width: 100%;
background: url("/img/dirt.png");
background-size: 2%;
image-rendering: -webkit-optimize-contrast;
padding-top: 0px;
padding-left: 0px;
font-family: Minecraftia;
}
#header {
width: 100%;
background-image: url("/img/header.png");
background-repeat: repeat-x;
background-size: 2%;
margin-left: -8px;
margin-top: -8px;
height: 64px;
}
a {
cursor: pointer;
color: blue;
text-decoration: none;
}
#font-face {
font-family: Minecraftia;
src: url("/Minecraftia-Regular.ttf");
}
#header-menu {
width: 100%;
height: 48px;
line-height: 58px;
vertical-align: middle;
margin-left: -8px;
padding-left: 8px;
border-top: 1px solid black;
border-bottom: 1px solid black;
background: rgba(17,146,32,1);
background: -moz-linear-gradient(top, rgba(17,146,32,1) 0%, rgba(40,128,40,1) 45%, rgba(0,82,5,1) 52%, rgba(15,123,42,1) 100%);
background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(17,146,32,1)), color-stop(45%, rgba(40,128,40,1)), color-stop(52%, rgba(0,82,5,1)), color-stop(100%, rgba(15,123,42,1)));
background: -webkit-linear-gradient(top, rgba(17,146,32,1) 0%, rgba(40,128,40,1) 45%, rgba(0,82,5,1) 52%, rgba(15,123,42,1) 100%);
background: -o-linear-gradient(top, rgba(17,146,32,1) 0%, rgba(40,128,40,1) 45%, rgba(0,82,5,1) 52%, rgba(15,123,42,1) 100%);
background: -ms-linear-gradient(top, rgba(17,146,32,1) 0%, rgba(40,128,40,1) 45%, rgba(0,82,5,1) 52%, rgba(15,123,42,1) 100%);
background: linear-gradient(to bottom, rgba(17,146,32,1) 0%, rgba(40,128,40,1) 45%, rgba(0,82,5,1) 52%, rgba(15,123,42,1) 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#119220', endColorstr='#0f7b2a', GradientType=0 );
}
<!DOCTYPE html>
<html>
<head>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<title>The Infected Horde</title>
<link rel="stylesheet" href="/style.css" type="text/css">
</head>
<body>
<div id="header"></div>
<img src="/img/logo.gif" style="height: 72px; width: auto;" /><br>
<div id="header-menu"><a id="homebtn">Home</a> 
<a id="videosbtn">Servers We Play On</a></div> 
<a id="aboutusbtn">About Us</a></div> 
<a id="videosbtn">Videos</a></div> 
<a id="contactbtn">Contact Us</a></div> 
</body>
</html>
What am i doing wrong?
Sorry about the non-working images in the snippet.
Because you are putting </div> tags without a reason, there is only one div, it should be :
<div id="header"></div>
<img src="/img/logo.gif" style="height: 72px; width: auto;" /><br>
<div id="header-menu"><a id="homebtn">Home</a>
<a id="videosbtn">Servers We Play On</a>
<a id="aboutusbtn">About Us</a>
<a id="videosbtn">Videos</a>
<a id="contactbtn">Contact Us</a>
</div>
Use only one div i.e at the end and i would prefer using display:inline in the a tag css. Moreover here is the FIDDLE and i have deleted   because i don't think they have any use here.

Header div won't stay on top of Chrome browser

I have a #header div which has a gradient background. Inside that background, there is the logo of the website, plus the navigation menu on the bottom. That #header div is supposed to be on top of the browser - not fixed, but without any padding/margin, otherwise it would leave block of body background.
This is exactly what it's happening on Chrome. Instead of staying in the top of the browser, it is like if 30px of margin-top was put inside the #header. Funny thing is that it works perfectly on Safari, i.e., it stays on the top of the browser.
This is my code:
<div id = "header">
<div id = "header-content">
<p id = "logo"> Components </p>
<div id = "menu-links-div">
<ul id = "ul-links">
<li class = "menu-links"> Home </li>
<li class = "menu-links"> Media </li>
<li class = "menu-links"> Sobre </li>
<li class = "menu-links"> Contatos </li>
</ul>
</div>
</div>
</div>
And the CSS:
body {
margin: 0; padding: 0; border: 0; outline: 0; font-size: 100%; vertical-align: baseline; background: transparent;
box-sizing:border-box; -moz-box-sizing:border-box; -webkit-box-sizing:border-box; height:100%; -webkit-font-smoothing:subpixel-antialiased; font-size:13px;
}
#header {
display: inline-block;
width: 100%;
background: rgba(90,137,173,1);
background: -moz-linear-gradient(left, rgba(90,137,173,1) 0%, rgba(195,223,245,1) 51%, rgba(90,137,173,1) 100%);
background: -webkit-gradient(left top, right top, color-stop(0%, rgba(90,137,173,1)), color-stop(51%, rgba(195,223,245,1)), color-stop(100%, rgba(90,137,173,1)));
background: -webkit-linear-gradient(left, rgba(90,137,173,1) 0%, rgba(195,223,245,1) 51%, rgba(90,137,173,1) 100%);
background: -o-linear-gradient(left, rgba(90,137,173,1) 0%, rgba(195,223,245,1) 51%, rgba(90,137,173,1) 100%);
background: -ms-linear-gradient(left, rgba(90,137,173,1) 0%, rgba(195,223,245,1) 51%, rgba(90,137,173,1) 100%);
background: linear-gradient(to right, rgba(90,137,173,1) 0%, rgba(195,223,245,1) 51%, rgba(90,137,173,1) 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#5a89ad', endColorstr='#5a89ad', GradientType=1 );
}
#logo {
text-align: center;
font-size: 7.5em;
margin-top: 105px;
font-family: Alien;
}
#header-content {
margin: 0 auto;
}

How to get rid of white space that appears below and above text inside a td tag

What I am attempting to accomplish is that the background changes when a user hovers over the td element. What the my current code is doing is shown in the picture below:
I am trying to get rid of the white space so that the gradient fills the entire td/cell.
The code below is for one row of my table.
<tr>
<td class="itemTrue">
<h4>AMA<br>ROUND ALUMINUM MAST ARM SERIES</h4>
</td>
<td class="itemTrue">
<h4>AVPL-SSA<br>4 INCH SQUARE STRAIGHT ALUMINUM SERIES</h4>
</td>
<td class="itemTrue">
<h4>SMA<br>ROUND ALUMINUM MAST ARM SERIES</h4>
</td>
<td class="itemTrue">
<h4>AVPL-SSS<br>4 INCH SQUARE STRAIGHT STEEL SERIES</h4>
</td>
</tr>
Here is the CSS code that affects these tags.
table {
position: relative;
top: 50px;
box-shadow: 1px 1px 8px 7px #234229;
width: 1300px;
cell-spacing: 0px;
padding: 0px;
}
table, td, tr {
border: 1px solid black;
font-family: 'Roboto Slab', serif;
font-size: 12px;
border-spacing: 0px;
padding: 0px;
line-height: 14px;
vertical-align: baseline;
}
td {
text-align: center;
margin: 0px;
padding: 0px;
}
#armPoles > td {
border-bottom: 5px double black;
margin: 0px;
}
.itemTrue :hover {
color: white;
background: #e4e4e4;
background: -moz-linear-gradient(top, #e4e4e4 0%, #295534 73%, #1d3923 88%, #000000 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e4e4e4), color-stop(73%,#295534), color-stop(88%,#1d3923), color-stop(100%,#000000));
background: -webkit-linear-gradient(top, #e4e4e4 0%,#295534 73%,#1d3923 88%,#000000 100%);
background: -o-linear-gradient(top, #e4e4e4 0%,#295534 73%,#1d3923 88%,#000000 100%);
background: -ms-linear-gradient(top, #e4e4e4 0%,#295534 73%,#1d3923 88%,#000000 100%);
background: linear-gradient(to bottom, #e4e4e4 0%,#295534 73%,#1d3923 88%,#000000 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#e4e4e4', endColorstr='#000000',GradientType=0 );
}
h4 {
font-weight: normal;
}
Your missing a tag for your H4, why not set that as well. Also not sure which tag is messing up you can set different colour backgrounds to help you debug and learn.
So, try adding 'padding:0' etc etc to your css.
If you're putting the gradient on your <h4>'s on hover, you will need to take off the default margin h4 { margin: 0; }, alternatively you could put the hover effect on the td itself: td:hover { background: blue; }
I think you need just
td:hover {
background: linear-gradient(...);
}
I forgot that h4 can have margins and setting those margins up fixed the issue.
Thank you very much to everyone that came to help! =)

div auto responsive to text inside

I have a DIV inside another. One of those has "plain text" and what I want to do is to make its width automatic with a maximum with possible.
Here is the code:
HTML:
<div class="artigo_nome"> <!-- here is the part that I need help -->
<p>
Computador Apple Imac 27P I5 3.5Ghz/8Gb/1Tb Md096Po/A
</p>
</div>
<div class="artigo_definicoes round_corner">
<div class="separador_artigo_imagem">
<img src="img/artigos/fones.png" class="imagem_artigo" alt="artigo"/>
</div>
<div class="artigo_info">
Computador Apple Imac 27P I5 3.5Ghz/8Gb/1Tb Md096Po/A<br />
<span class="ler_mais">ver mais</span><br />
<span class="comparar">adicionar para comprar</span>
</div>
</div>
CSS:
.categoria_lista_artigos .artigo_nome{
color:#6e6e6e;
width:234px;
height:34px;
margin-left: -2px;
border-radius:5px 5px 0 0;
border-left:2px #aeaeae solid;
border-right:2px #aeaeae solid;
border-bottom:1px #aeaeae solid;
/*background-color:#E6E6E6;*/
position:relative;
font-weight: 600;
-webkit-box-shadow: 0px -3px 5px #e2e2e2;
-moz-box-shadow: 0px -3px 5px #e2e2e2;
box-shadow: 0px -3px 5px #e2e2e2;
background: #ffffff; /* Old browsers */
background: -moz-linear-gradient(top, #ffffff 0%, #cfcfcf 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#cfcfcf)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #ffffff 0%,#cfcfcf 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #ffffff 0%,#cfcfcf 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #ffffff 0%,#cfcfcf 100%); /* IE10+ */
background: linear-gradient(to bottom, #ffffff 0%,#cfcfcf 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#cfcfcf',GradientType=0 ); /* IE6-9 */
}
.categoria_lista_artigos .artigo_nome div {
margin: auto;
padding: 4px 13px;
vertical-align: middle;
line-height:13px;
}
If you need anything more, just say.
What you want is a shrink-to-fit width for your text line.
You can simplify your HTML as follows:
<div class="artigo_nome">
Computador Apple Imac 27P I5 3.5Ghz/8Gb/1Tb Md096Po/A
</div>
and apply the following CSS rules:
.artigo_nome {
border: 1px dotted blue;
display: inline-block;
max-width: 250px;
padding: 10px;
word-break: break-all; /* optional */
}
which gives the following result: http://jsfiddle.net/audetwebdesign/vVhWR/
The inline-block will give you a shrink-to-fit width up to the specified max-width value.
If you want to be able to wrap long words, add the word-break property.
Note: I left out the border/shadow/background styling for simplicity, but you can easily add them back in.

Why is this CSS3 gradient breaking my page layout in IE?

It took me a long time to figure out what was breaking my layout (the issue is only in ie). I am using html5 (with moderizr) and I figured out the layout was fine if I removed the following from the css:
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f5ede1, endColorstr=#f5ede1);
I want the gradient there for the design, though... Why does the filter break the layout in Internet Explorer?
The html for the header is:
<header>
<section id="header">
<div id="logo"><img alt="Congress" src="../img/congress-logo.png"></div>
<div id="ons-logo"><a target="_blank" href="http://ons.org"><img width="175" height="77" alt="Oncology Nursing Society" src="../img/ons-logo.png"></a></div>
</section>
<nav id="main-nav">
<ul>
<li id="register"><span>Register</span>
<ul class="subNav">
<li>subnav</li>
</ul>
</li>
<li id="exhibit"><span>Exhibit Hall</span>
<ul class="subNav">
<li>subnav</li>
</ul>
</li>
<li id="networking"><span>Networking</span>
<ul class="subNav" style="display: none;">
<li>subnav</li>
</ul>
</li>
</ul>
</nav>
</header>
And this is my CSS:
img {
border: 0;
width: 100%;
display: block;
max-width: 100%;
}
header{
background: #f5ede1; /* Old browsers */
background: -moz-linear-gradient(top, #f5ede1 0%, #fbf8f3 48%, #f5ede1 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f5ede1), color-stop(48%,#fbf8f3), color-stop(100%,#f5ede1)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #f5ede1 0%,#fbf8f3 48%,#f5ede1 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #f5ede1 0%,#fbf8f3 48%,#f5ede1 100%); /* Opera 11.10+ */
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f5ede1, endColorstr=#f5ede1); /*IE6-9 */
background: -ms-linear-gradient(top, #f5ede1 0%,#fbf8f3 48%,#f5ede1 100%); /* IE10+ */
padding-bottom: 10em;
position:relative;
max-width: 100%;
margin: 0px;
}
.ie7 header/*, .ie8 header*/{
padding-bottom:0px;
}
section#header{
max-width: 900px;
margin: auto;
position: relative;
}
div#logo {
float: left;
margin: 1em 0 0 2em;
max-width:365px;
}
.ie8 div#logo{
width:365px;
}
div#ons-logo{
max-width: 175px;
padding-left: 23em;
float:left;
}
.ie8 div#ons-logo{
width: 175px;
}
nav#main-nav {
margin-top: -30px;
padding: 0.5em 5% 0.5em 35%;
width: 60%;
float: left;
background: #d56d2a; /* Old browsers */
background: -moz-linear-gradient(top, #d56d2a 1%, #f47d31 10%, #f47d31 85%, #ea8f52 100%, #f47d31 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(1%,#d56d2a), color-stop(10%,#f47d31), color-stop(85%,#f47d31), color-stop(100%,#ea8f52), color-stop(100%,#f47d31)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #d56d2a 1%,#f47d31 10%,#f47d31 85%,#ea8f52 100%,#f47d31 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #d56d2a 1%,#f47d31 10%,#f47d31 85%,#ea8f52 100%,#f47d31 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #d56d2a 1%,#f47d31 10%,#f47d31 85%,#ea8f52 100%,#f47d31 100%); /* IE10+ */
background: linear-gradient(to bottom, #d56d2a 1%,#f47d31 10%,#f47d31 85%,#ea8f52 100%,#f47d31 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#d56d2a', endColorstr='#f47d31',GradientType=0 ); /* IE6-9 */
border-bottom: 2px solid #F5D8C7;
border-top: 2px solid #F5D8C7;
box-shadow: 0 10px 9px rgba(0, 0, 0, 0.55);
}
add this meta tag in header for campatibility with IE9:
<meta http-equiv="X-UA-Compatible" content="IE=9" />
Try to generate your gradient with colorzilla:
http://www.colorzilla.com/gradient-editor/
It's very simple.