0

I am trying to create homepage with search that is similar to google search. I did most of the job with css, but I have problem if I don't use <br> tag between image and input.

<div class="page">

<img class="logo" src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png">

<input id="searchme" class="search" title="Search" type="text"><br>
    <div class="Bcontainer">
      <div class="button left">Search</div>
      <div class="button right">Check Blog</div>
    </div>
</div>

Css is...

body {
    font-size: 13px;
    width: 100%;
    margin: 0;
    padding: 0;
}

.page {
  padding-top: 20vh;
  text-align: center;
  padding-bottom: 20px;
  margin-bottom: 25vh;
}

.logo {
  padding-bottom: 15px;
}

.search {
  width: 30vw;
  padding: 15px;
  border: 1px solid #d9d9d9;
  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACrElEQVR42u2Xz2sTQRSAX8VSb1K8iNqKooJH2Ux6Ksn+iPQqxZMIehJB0do/IMhmQWsvHr2KSEGk0tSLIoWIYNUKij20F2/N7iaUZnYT0kYzzhMKs0HDJiTdLcwHDwKZSd63781LBiQSSW9JZdkhzfKm1Rz9mjZp/W9YdEU3vXv4HsQZ40FtNG36q5rls//Ej4tmbSS2T15Mvp3ExOPmEMQNbBtMMEyoljcFcQN7PqyAlqNfIG7gYQ0tYNIaxA1MrJPY3wImbUqBKAXSFv0tBSIVMOkvKRDtGKWN/T6FdqRAxFNoWwpEPIXqUqBT6ALU/UVgu8GW4GD3f6f9TRDYNJTDrk7YbtiqUumHwIYoUJuHERDAS0r4CvgFECgbY+cFAR7KT+g1POmCKFDNw6WggHc3fBtVb4CAoyauBgXIG+g1Xh5mRAGah6cggBd11fK/h7lOprIs0H6uRl6KAo5O7kOv4QmPiwJ4Jqqv4FiwCtXjvD2+tRmfK6kZ/ygI2HritK0rDVGgrClJ6DWMwYC/AGuCBMYcIC2V0CzvjmbRz3j3xUjn6CfeYreUJ2wQkGD75INPX1mFfsEFrrcIYCvdhC4paWQakxajpJMr0C9YFg54i7AsClRmh9/xnr0NHcInzZStk2aLwAcGMAD9pPIazvFKVDD5rdnhJeHLX5RTyRPQHpz5o66emMc9wdlPtvA8wF7Aq2BUHh1525qEo5JtR1WeOXpickO9cJIpyuD6xJmhYiZ5ytWSl3mlnuOaf+2zDaLDXmJrSgZ/MYVEugo+gSh+FkSBa4yd5Ul87DZ5XpFl/AyIEjzYjkau8WqshU2cr13HPbgX4gJOD97n465GZlyVvC9mSKloKI2iTnbwNT+gBX54H+IaXAtxJzE3ycSAFqSAFJACUkAikXD+AHj5/wx2o5osAAAAAElFTkSuQmCC) no-repeat;
  background-position: 98.5%;
  background-size: 1.5em;
  border-radius: 24px;
}

.search:hover {
  border: 1px solid #b9b9b9;
  border-top-color: #a0a0a0;
}

.search:focus {
  outline: none;
  border: 1px solid #4d90fe;
}

.button {
  display: inline-block;
  background: #f2f2f2;
  padding: 8px 12px;
  font-weight: 700;
  font-size: 13px;
  border: 1px solid #f2f2f2;
  border-radius: 2px;
  color: #757575;
  font-family: arial, sans-serif;
}

.button:hover {
  border: 1px solid #c6c6c6;
  color: #222;
  cursor: pointer;
}

This is the fiddle of trying to center image and input... https://jsfiddle.net/rm36nfgL/

Here is the full page example... https://jsfiddle.net/sh7zy9re/

So, two questions...

  1. How to place image and input one under another and centered.

  2. Which @media state to use, would it be @media only screen and (max-width: 959px) for phone views, and what to change in css, so (image as logo and input) looks around 90% of full page width on phones?

3 Answers3

2

I think all you need is to add:

.page {
  //...
  display: flex;
  flex-direction: column;
  align-items: center;
}
T04435
  • 12,507
  • 5
  • 54
  • 54
  • Umm, yes, you're right, and width: 100%; on page too. I did not remembered flex display. – đeronimobrebreb Apr 03 '19 at 00:50
  • This will work but it's not ok. Google (and the web in general) did this way before flex becomes a standard. You need to check display property, available values and their behavior – Apolo Apr 03 '19 at 08:03
0

image and inputs are inline block elements. for a proper flow, use display block on them:

div {
  border: 1px solid red;
  padding: 5px 10px;
  margin: 5px;
}

.block img, .block input {
  display: block;
}
<div>
  <h3>Without display block</h3>
  <img class="logo" src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png">
  <input type="text">
</div>
<div class="block">
  <h3>With display block</h3>
  <img class="logo" src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png">
  <input type="text">
</div>
Apolo
  • 3,844
  • 1
  • 21
  • 51
-1

Please check your css code on .search{}. you put the width 30vw, i dont know what is vw means, just change it into 300px, then your code result looks tidy.

    .search {
      width: 300px;
      padding: 15px;
      border: 1px solid #d9d9d9;
      background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACrElEQVR42u2Xz2sTQRSAX8VSb1K8iNqKooJH2Ux6Ksn+iPQqxZMIehJB0do/IMhmQWsvHr2KSEGk0tSLIoWIYNUKij20F2/N7iaUZnYT0kYzzhMKs0HDJiTdLcwHDwKZSd63781LBiQSSW9JZdkhzfKm1Rz9mjZp/W9YdEU3vXv4HsQZ40FtNG36q5rls//Ej4tmbSS2T15Mvp3ExOPmEMQNbBtMMEyoljcFcQN7PqyAlqNfIG7gYQ0tYNIaxA1MrJPY3wImbUqBKAXSFv0tBSIVMOkvKRDtGKWN/T6FdqRAxFNoWwpEPIXqUqBT6ALU/UVgu8GW4GD3f6f9TRDYNJTDrk7YbtiqUumHwIYoUJuHERDAS0r4CvgFECgbY+cFAR7KT+g1POmCKFDNw6WggHc3fBtVb4CAoyauBgXIG+g1Xh5mRAGah6cggBd11fK/h7lOprIs0H6uRl6KAo5O7kOv4QmPiwJ4Jqqv4FiwCtXjvD2+tRmfK6kZ/ygI2HritK0rDVGgrClJ6DWMwYC/AGuCBMYcIC2V0CzvjmbRz3j3xUjn6CfeYreUJ2wQkGD75INPX1mFfsEFrrcIYCvdhC4paWQakxajpJMr0C9YFg54i7AsClRmh9/xnr0NHcInzZStk2aLwAcGMAD9pPIazvFKVDD5rdnhJeHLX5RTyRPQHpz5o66emMc9wdlPtvA8wF7Aq2BUHh1525qEo5JtR1WeOXpickO9cJIpyuD6xJmhYiZ5ytWSl3mlnuOaf+2zDaLDXmJrSgZ/MYVEugo+gSh+FkSBa4yd5Ul87DZ5XpFl/AyIEjzYjkau8WqshU2cr13HPbgX4gJOD97n465GZlyVvC9mSKloKI2iTnbwNT+gBX54H+IaXAtxJzE3ycSAFqSAFJACUkAikXD+AHj5/wx2o5osAAAAAElFTkSuQmCC) no-repeat;
      background-position: 98.5%;
      background-size: 1.5em;
      border-radius: 24px;
}

check on jsfiddle that i made https://jsfiddle.net/3szvjgfa/

Ramadhani
  • 7
  • 3
  • vw stands for "viewport width" and is a valid css unit (30vw is 30% of viewport width) – Apolo Apr 03 '19 at 07:57
  • Hey, welcome to stack overflow. Here is some tips on how to [write a good answer](https://stackoverflow.com/help/how-to-answer). I recommend that if you're unsure how to answer the specific question, do some research or leave it to someone else. FYI `width: 30vw;` is a [view width property](https://stackoverflow.com/questions/21624014/css-are-view-height-vh-and-view-width-vw-units-widely-supported) – P. Moloney Apr 03 '19 at 08:00