1

I have a piece of code for a website that I'm writing, that I can't figure out.

.program_category_description {
  background-color: #e0e0e0;
  margin-bottom: 20px;
  max-width:1300px;
}
.program_category_description .description {
  display: table-cell;
  padding: 2% 1% 2% 1%;
}
.program_category_description .title {
  font-weight: bold;
  font-size: 20px;
  padding-bottom: 2%;
  font-family: 'Lato', sans-serif;
}
.program_category_description .more_info {
  text-align: center;
  vertical-align: middle;
  display: table-cell;
  width: 15%;
  background-color: #CE6D2B;
}
.program_category_description .more_info a {
  color: white !important;
}
.more_info_btn {
  font-size: 20px;
  display: inline-block;
  height: 100%;
  width: 100%;
  text-align: center;
  cursor: pointer;
  -o-transition: background-color .2s ease-in;
  -moz-transition: background-color .2s ease-in;
  -webkit-transition: background-color .2s ease-in;
  transition: background-color .2s ease-in;
}
.more_info_btn:hover {
  background-color: #b96226;
}
.more_info_btn:active {
  background-color: #ccc;
}
<div class="article_body_section program_category_description">
  <div class="description">
    <div class="title">Short Term Programs</div>
    <div class="description_description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis euismod lacus vitae dui fermentum, quis lacinia risus viverra. Nulla aliquam leo quis velit dictum viverra. Duis vehicula pharetra imperdiet. Duis eleifend orci eget ultrices convallis.
      Nulla nec aliqu.</div>
  </div>
  <div class="more_info"><a href="#"><span class="more_info_btn">More Info</span></a>
  </div>

</div>

The reasoning for the span is so that the whole orange block is a clickable link. The problem is that I want the "more info" text to be centered within the block at all times. I don't want to give it specific pixel properties as I want it to stretch or get bigger when resized. The only restriction is a max-width of 1300px.

I have already tried vertical align, or adding a percentage based padding, but none work. As you can probably tell, I am not very experienced in this and learning by day, so if you see other things worth pointing out in the code, or other solutions, please do.

Gerardo
  • 113
  • 1
  • 9

6 Answers6

3

You can use display: flex alongside with align-items: center:

.program_category_description {
  background-color: #e0e0e0;
  margin-bottom: 20px;
  max-width: 1300px;
}
.program_category_description .description {
  display: table-cell;
  padding: 2% 1% 2% 1%;
}
.program_category_description .title {
  font-weight: bold;
  font-size: 20px;
  padding-bottom: 2%;
  font-family: 'Lato', sans-serif;
}
.program_category_description .more_info {
  text-align: center;
  vertical-align: middle;
  display: table-cell;
  width: 15%;
  background-color: #CE6D2B;
}
.program_category_description .more_info a {
  color: white !important;
  display: inline-block;
  height: 100%;
  width: 100%;
  text-decoration: blink;
}
.more_info_btn {
  font-size: 20px;
  height: 100%;
  display: inline-block;
  width: 100%;
  text-align: center;
  cursor: pointer;
  -o-transition: background-color .2s ease-in;
  -moz-transition: background-color .2s ease-in;
  -webkit-transition: background-color .2s ease-in;
  transition: background-color .2s ease-in;
  text-decoration: none;
  display: flex;
  justify-content: center;
  align-items: center;
}
.more_info_btn:hover {
  background-color: #b96226;
}
.more_info_btn:active {
  background-color: #ccc;
}
<div class="article_body_section program_category_description">
  <div class="description">
    <div class="title">Short Term Programs</div>
    <div class="description_description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis euismod lacus vitae dui fermentum, quis lacinia risus viverra. Nulla aliquam leo quis velit dictum viverra. Duis vehicula pharetra imperdiet. Duis eleifend orci eget ultrices convallis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis euismod lacus vitae dui fermentum, quis lacinia risus viverra. Nulla aliquam leo quis velit dictum viverra. Duis vehicula pharetra imperdiet. Duis eleifend orci eget ultrices convallis.
      Nulla nec aliqu.</div>
  </div>
  <div class="more_info"><a href="#"><span class="more_info_btn">More Info</span></a>
  </div>

</div>

Second example with very long text:

.program_category_description {
  background-color: #e0e0e0;
  margin-bottom: 20px;
  max-width: 1300px;
}
.program_category_description .description {
  display: table-cell;
  padding: 2% 1% 2% 1%;
}
.program_category_description .title {
  font-weight: bold;
  font-size: 20px;
  padding-bottom: 2%;
  font-family: 'Lato', sans-serif;
}
.program_category_description .more_info {
  text-align: center;
  vertical-align: middle;
  display: table-cell;
  width: 15%;
  background-color: #CE6D2B;
}
.program_category_description .more_info a {
  color: white !important;
  display: inline-block;
  height: 100%;
  width: 100%;
  text-decoration: blink;
}
.more_info_btn {
  font-size: 20px;
  height: 100%;
  display: inline-block;
  width: 100%;
  text-align: center;
  cursor: pointer;
  -o-transition: background-color .2s ease-in;
  -moz-transition: background-color .2s ease-in;
  -webkit-transition: background-color .2s ease-in;
  transition: background-color .2s ease-in;
  text-decoration: none;
  display: flex;
  justify-content: center;
  align-items: center;
}
.more_info_btn:hover {
  background-color: #b96226;
}
.more_info_btn:active {
  background-color: #ccc;
}
<div class="article_body_section program_category_description">
  <div class="description">
    <div class="title">Short Term Programs</div>
    <div class="description_description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis euismod lacus vitae dui fermentum, quis lacinia risus viverra. Nulla aliquam leo quis velit dictum viverra. Duis vehicula pharetra imperdiet. Duis eleifend orci eget ultrices convallis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis euismod lacus vitae dui fermentum, quis lacinia risus viverra. Nulla aliquam leo quis velit dictum viverra. Duis vehicula pharetra imperdiet. Duis eleifend orci eget ultrices convallis. Nulla nec aliqu. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis euismod lacus vitae dui fermentum, quis lacinia risus viverra. Nulla aliquam leo quis velit dictum viverra. Duis vehicula pharetra imperdiet. Duis eleifend orci eget ultrices convallis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis euismod lacus vitae dui fermentum, quis lacinia risus viverra. Nulla aliquam leo quis velit dictum viverra. Duis vehicula pharetra imperdiet. Duis eleifend orci eget ultrices convallis. Nulla nec aliqu.</div>
  </div>
  <div class="more_info"><a href="#"><span class="more_info_btn">More Info</span></a>
  </div>

</div>
Alex Char
  • 32,879
  • 9
  • 49
  • 70
  • Hello Alex, as you can see when you run it, that breaks the whole orange box being a link. Is there a way around it? Thank you for the time. – Gerardo Sep 09 '15 at 09:26
  • at least for me, in the updated code, the box isn't a link still. Only the section that contains the text up to the sides of the box, but not above or under. – Gerardo Sep 09 '15 at 09:30
  • so about our answer we also suggested you the same answer – Amit singh Sep 09 '15 at 09:35
  • I retract, didn't see how you did it. Unfortunately setting it at a fixed line heigth doesn't work, as there are different boxes like this, and when you expand/contract them, there are more lines of text, and the more info doesn't adjust to the new heigth of the box. – Gerardo Sep 09 '15 at 09:37
  • @Gerardo check it I think is ok now. – Alex Char Sep 09 '15 at 09:44
  • Yes! I will be looking into what changes you did to analyze and learn from it. Thank you! On a side note, it seems that someone dedicated themselves to downvote every post of this question, making it look like it was myself. – Gerardo Sep 09 '15 at 09:48
  • Glad that I helped you. No it can't be you because you need some reputation before you can down vote. – Alex Char Sep 09 '15 at 09:52
1

Just add your a tag instead your div: (This is a cross-browser solution. It works in firefox, chrome and IE)

.program_category_description {
  background-color: #e0e0e0;
  margin-bottom: 20px;
  max-width:1300px;
}
.program_category_description .description {
  display: table-cell;
  padding: 2% 1% 2% 1%;
}
.program_category_description .title {
  font-weight: bold;
  font-size: 20px;
  padding-bottom: 2%;
  font-family: 'Lato', sans-serif;
}
.program_category_description .more_info {
  text-align: center;
  vertical-align: middle;
  display: table-cell;
  width: 15%;
  background-color: #CE6D2B;
}
.program_category_description .more_info a {
  color: white !important;
}
.more_info_btn {
  font-size: 20px;
  display: inline-block;
  width: 100%;
  text-align: center;
  cursor: pointer;
  -o-transition: background-color .2s ease-in;
  -moz-transition: background-color .2s ease-in;
  -webkit-transition: background-color .2s ease-in;
  transition: background-color .2s ease-in;
}
.more_info:hover {
  background-color: #b96226;
}
.more_info:active {
  background-color: #ccc;
}
<div class="article_body_section program_category_description">
  <div class="description">
    <div class="title">Short Term Programs</div>
    <div class="description_description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis euismod lacus vitae dui fermentum, quis lacinia risus viverra. Nulla aliquam leo quis velit dictum viverra. Duis vehicula pharetra imperdiet. Duis eleifend orci eget ultrices convallis.
      Nulla nec aliqu.</div>
  </div>
  <a class="more_info" href="#"><span class="more_info_btn">More Info</span></a>
  </div>

</div>
Marcos Pérez Gude
  • 21,869
  • 4
  • 38
  • 69
0

I think this might solve your problem..

You just have to change display:inline-block into display:table-cell in the .more_info_btn

and make div an a tag so that the whole box will be link

Amit singh
  • 2,006
  • 1
  • 13
  • 19
0

Ammit Singh was correct

if you give your a class of block

 <div class="more_info"><a href="#" class="block"><span class="more_info_btn">More Info</span></a>

Then create the .block class in css

.block{display:block;}

problem is solved

WEB PERSON
  • 50
  • 5
-1

You need to remove the display inline-block from the .more_info_btn :)

.program_category_description {
  background-color: #e0e0e0;
  margin-bottom: 20px;
  max-width:1300px;
}
.program_category_description .description {
  display: table-cell;
  padding: 2% 1% 2% 1%;
}
.program_category_description .title {
  font-weight: bold;
  font-size: 20px;
  padding-bottom: 2%;
  font-family: 'Lato', sans-serif;
}
.program_category_description .more_info {
  text-align: center;
  vertical-align: middle;
  display: table-cell;
  width: 15%;
  background-color: #CE6D2B;
}
.program_category_description .more_info a {
  color: white !important;
}
.more_info_btn {
  font-size: 20px;
 /* display: inline-block;*/
  height: 100%;
  width: 100%;
  text-align: center;
  cursor: pointer;
  -o-transition: background-color .2s ease-in;
  -moz-transition: background-color .2s ease-in;
  -webkit-transition: background-color .2s ease-in;
  transition: background-color .2s ease-in;
}
.more_info_btn:hover {
  background-color: #b96226;
}
.more_info_btn:active {
  background-color: #ccc;
}
<div class="article_body_section program_category_description">
  <div class="description">
    <div class="title">Short Term Programs</div>
    <div class="description_description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis euismod lacus vitae dui fermentum, quis lacinia risus viverra. Nulla aliquam leo quis velit dictum viverra. Duis vehicula pharetra imperdiet. Duis eleifend orci eget ultrices convallis.
      Nulla nec aliqu.</div>
  </div>
  <div class="more_info"><a href="#"><span class="more_info_btn">More Info</span></a>
  </div>

</div>
Aaron
  • 10,187
  • 3
  • 23
  • 39
  • lol, love the -1 with no comment? removing the display property does align it vertically? – Aaron Sep 09 '15 at 09:34
-1

.program_category_description {
  background-color: #e0e0e0;
  margin-bottom: 20px;
  max-width:1300px;
}
.program_category_description .description {
  display: table-cell;
  padding: 2% 1% 2% 1%;
}
.program_category_description .title {
  font-weight: bold;
  font-size: 20px;
  padding-bottom: 2%;
  font-family: 'Lato', sans-serif;
}
.program_category_description .more_info {
  text-align: center;
  vertical-align: middle;
  display: table-cell;
  width: 15%;
  background-color: #CE6D2B;
}
.program_category_description .more_info a {
  color: white !important;
  width: 100%;
  text-align: center;
  display: table;
}
.more_info_btn {
  font-size: 20px;
  display: table-call;
  height: 100%;
  width: 100%;
  text-align: center;
  cursor: pointer;
  -o-transition: background-color .2s ease-in;
  -moz-transition: background-color .2s ease-in;
  -webkit-transition: background-color .2s ease-in;
  transition: background-color .2s ease-in;
}
.more_info_btn:hover {
  background-color: #b96226;
}
.more_info_btn:active {
  background-color: #ccc;
}
<div class="article_body_section program_category_description">
  <div class="description">
    <div class="title">Short Term Programs</div>
    <div class="description_description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis euismod lacus vitae dui fermentum, quis lacinia risus viverra. Nulla aliquam leo quis velit dictum viverra. Duis vehicula pharetra imperdiet. Duis eleifend orci eget ultrices convallis.
      Nulla nec aliqu.</div>
  </div>
  <div class="more_info"><a href="#"><span class="more_info_btn">More Info</span></a>
  </div>

</div>