HTML形成带边框的单独列

时间:2016-02-11 07:58:59

标签: html css html5 forms class

我有4列,我需要用边框分隔每列。它看起来像现在:

resume now

应该如何(例如红/蓝色):

resume with columns

问题是我没有列的任何div,我在<li> </li>内生成行,因此<li> </li>内的4个输入是1行:

<form class="form-style-9">

<h2>Personal details</h2>
<ul>
<div id="personal-details">
<li>    

    <div class="test">
    <label for="Rank">Rank</label>
    <input id="Rank" type="text" name="Rank" class="field-style field-split25 align-left" placeholder="Rank" /> 
    </div>

    <div class="test">
    <label for="RankApplied">Rank Applied</label>
    <input id="RankApplied" type="text" name="RankApplied" class="field-style field-split25 align-left" placeholder="Rank Applied" />   
    </div>

    <div class="test">
    <label for="Vesselstype">Vessel's type</label>
    <input id="Vesselstype" type="text" name="Vesselstype" class="field-style field-split25 align-left" placeholder="Vessel's type" />  
    </div>

    <div class="test">
    <label for="datepicker2">Date Applied</label>
    <input id="datepicker2" type="date" name="datepicker2" class="field-style field-split25-4 align-left" placeholder="Date Applied" />
    </div>
</li>

<li>    
    <div class="test">
    <label for="fname">First Name</label>
    <input id="fname" type="text" name="fname" class="field-style field-split25 align-left" placeholder="First Name" /> 
    </div>

    <div class="test">
    <label for="nationality">Nationality</label>
    <input id="nationality" type="text" name="nationality" class="field-style field-split25 align-left" placeholder="Nationality" />    
    </div>

    <div class="test">
    <label for="height">Height</label>
    <input id="height" type="text" name="height" class="field-style field-split25 align-left" placeholder="Height" />   
    </div>

    <div class="test">
    <label for="na">Nearest airport</label>
    <input id="na" type="text" name="na" class="field-style field-split25-4 align-left" placeholder="Nearest airport" />
    </div>
</li>

<li>    
    <div class="test">
    <label for="sname">Surename</label>
    <input id="sname" type="text" name="sname" class="field-style field-split25 align-left" placeholder="Surename" />   
    </div>

    <div class="test">
    <label for="noc">No. of children</label>
    <input id="noc" type="number" name="noc" class="field-style field-split25 align-left" placeholder="No. of children" />  
    </div>

    <div class="test">
    <label for="weight">Weight</label>
    <input id="weight" type="number" name="weight" class="field-style field-split25 align-left" placeholder="Weight" /> 
    </div>

    <div class="test4">
    <label for="languages">Languages</label>
    <input id="languages" type="text" name="languages" class="field-style field-split25-4 align-left" placeholder="Languages" />
    </div>
</li>

<li>    
    <div class="test">
    <label for="datepicker">Date of Birth</label>
    <input id="datepicker" type="date" name="datepicker" class="field-style field-split25 align-left" placeholder="Date of Birth"  />   
    </div>

    <div class="test">
    <label for="nok">Next of kin</label>
    <input id="nok" type="text" name="nok" class="field-style field-split25 align-left" placeholder="Next of kin" />    
    </div>

    <div class="test">
    <label for="coe">Color of eyes</label>
    <input id="coe" type="text" name="coe" class="field-style field-split25 align-left" placeholder="Color of eyes" />  
    </div>

    <div class="test4">
    <label for="english">English</label>
    <input id="english" type="text" name="english" class="field-style field-split25-4 align-left" placeholder="English" />
    </div>
</li>

<li>    
    <div class="test">
    <label for="pob">Place of Birth</label>
    <input id="pob" type="text" name="pob" class="field-style field-split25-4 align-left" placeholder="Place of Birth" />
    </div>

    <div class="test">
    <label for="nonok">Name of Next of Kin</label>
    <input id="nonok" type="text" name="nonok" class="field-style field-split25 align-left" placeholder="Name of Next of Kin" />    
    </div>

    <div class="test">
    <label for="coh">Color of hair</label>
    <input id="coh" type="text" name="coh" class="field-style field-split25 align-left" placeholder="Color of hair" />  
    </div>

    <div class="test4">
    <label for="german">German</label>
    <input id="german" type="text" name="german" class="field-style field-split25-4 align-left" placeholder="German" />
    </div>
</li>

<li>    
    <div class="test">
    <label for="HomeAddress">Home Address</label>
    <input id="HomeAddress" type="text" name="HomeAddress" class="field-style field-split25 align-left" placeholder="Home Address" />   
    </div>

    <div class="test">
    <label for="aonok">Address of Next of Kin</label>
    <input id="aonok" type="text" name="aonok" class="field-style field-split25 align-left" placeholder="Address of Next of Kin" /> 
    </div>

    <div class="test">
    <label for="os">Overall size</label>
    <input id="os" type="text" name="os" class="field-style field-split25 align-left" placeholder="Overall size" /> 
    </div>

    <div class="test4">
    <label for="spain">Spain</label>
    <input id="spain" type="text" name="spain" class="field-style field-split25-4 align-left" placeholder="Spain" />
    </div>
</li>

<li>    
    <div class="test">
    <label for="TelNo">Telephone No.</label>
    <input id="TelNo" type="text" name="TelNo" class="field-style field-split25 align-left" placeholder="Telephone No." />  
    </div>

    <div class="test">
    <label for="TelNo">Telephone No.</label>
    <input id="TelNo" type="text" name="TelNo" class="field-style field-split25 align-left" placeholder="Telephone No." />  
    </div>

    <div class="test">
    <label for="sz">Shoe size</label>
    <input id="sz" type="text" name="sz" class="field-style field-split25 align-left" placeholder="Shoe size" />    
    </div>

    <div class="test4">
    <label for="BankDetails">Bank Details</label>
    <input id="BankDetails" type="text" name="BankDetails" class="field-style field-split25-4 align-left" placeholder="Bank Details" />
    </div>
</li>

</div>

您有什么想法我怎么能实现这一目标?这是FIDDLE

4 个答案:

答案 0 :(得分:2)

如果要保留现有标记,这里有一个选项(尽管您可能需要稍微调整一下这些值)

需要注意的是,将ul作为ul的直接子项是无效标记,应将其删除。您可以将ID设置在ul { position: relative; } ul li:first-child .test:before { content: ' '; position: absolute; display: block; border: 1px solid red; top: 0; left: 0; width: 23.5%; height: 100%; } ul li:first-child .test:nth-child(2):before { left: calc(23.5% + 1px); width: 24%; border: 1px solid blue; } ul li:first-child .test:nth-child(3):before { left: calc(47.5% + 1px); width: 24%; } ul li:first-child .test:nth-child(4):before { left: calc(71.5% + 1px); border: 1px solid blue; } 上。

Updated fiddle

onComplete

答案 1 :(得分:1)

如果您强烈需要将其保留为行,则可以选择使用absolute定位,div。

#personal-details{
  position: relative;
}
ul{
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}
li{
  width: 25%;
}
.parent{
  position: absolute;
  top: 0;
  bottom: 0;
  right: 0;
  left: 0;
}
.borders{
  display: flex;
  justify-content: space-between;
  height: 40px;
}
.border{
  border: 1px solid red;
  width: 25%;
}
<div id="personal-details">
  <ul>
    <li>this is first</li>
    <li>this is second</li>
    <li>this is third</li>
    <li>this is forth</li>
    <li>this is first</li>
    <li>this is second</li>
    <li>this is third</li>
    <li>this is forth</li>
  </ul>
  <div class="parent">
    <div class="borders">
      <div class="border"></div>
      <div class="border"></div>
      <div class="border"></div>
      <div class="border"></div>
    </div>
  </div>
</div>

注1

请注意,您不应将div直接放在ul内,这是不正确的:

<ul>
    <div>
        <li>Item</li>
        <li>Item</li>
        <li>Item</li>
    </div>
</ul>

注2

如果你按照列的方式生成它们,那将是一种更好的做法,这样你就不需要使用CSS了。

期望的标记

<ul id="personal-details">
    <li>
        <ul class="column">
            <li>Rank</li>
            <li>First name</li>
            <li>Surname</li>
            <li>Date of Birth</li>
            <li>Place of Birth</li>
            <li> ... </li>
            <li> ... </li>
        </ul>    
    </li>
    <li>
        <ul class="column">
            <li>Rank</li>
            <li>Nationality</li>
            <li>No. of children</li>
            <li>Next of kin</li>
            <li>Name of Next of kin</li>
            <li> ... </li>
            <li> ... </li>
        </ul>    
    </li>
    <li> ... </li>
    <li> ... </li>
</ul>

解决方案

ul{
  list-style: none;
}
#personal-details{
  margin: auto;
  display: flex;
  justify-content: space-between;
}
#personal-details > li{
  padding: 20px;
  border: 1px solid red;
}
.column{
  padding: 0;
  text-align: center;
}
<ul id="personal-details">
    <li>
        <ul class="column">
            <li>
                <label for="Rank">Rank</label>
                <input type="text" name="Rank" placeholder="Rank" />
            </li>
            <li>
                <label for="Firstname">First name</label>
                <input type="text" name="Firstname" placeholder="Firstname" />
            </li>
            <li>
                <label for="Surname">Surname</label>
                <input type="text" name="Surname" placeholder="Surname" />
            </li>
            <li>
                <label for="Rank">Date of Birth</label>
                <input type="text" name="DateofBirth" placeholder="DateofBirth" />
            </li>
            <li>
                <label for="PlaceofBirth">Place of Birth</label>
                <input type="text" name="PlaceofBirth" placeholder="Place of Birth" />
            </li>
            <li> ... </li>
            <li> ... </li>
        </ul>    
    </li>
    <li>
        <ul class="column">
            <li>
                <label for="RankApplied">Rank Applied</label>
                <input type="text" name="RankApplied" placeholder="RankApplied" />
            </li>
            <li>
                <label for="Nationality">Nationality</label>
                <input type="text" name="Nationality" placeholder="Nationality" />
            </li>
            <li>
                <label for="NoOfChildren">No. Of Children</label>
                <input type="text" name="NoOfChildren" placeholder="NoOfChildren" />
            </li>
            <li>
                <label for="NextOfKin">Next Of Kin</label>
                <input type="text" name="NextOfKin" placeholder="NextOfKin" />
            </li>
            <li>
                <label for="NameOfNextOfKin">Name of Next of kin</label>
                <input type="text" name="NameOfNextOfKin" placeholder="NameOfNextOfKin" />
            </li>
            <li> ... </li>
            <li> ... </li>
        </ul>    
    </li>
    <li>
        <ul class="column">
            <li>
                <label for="Rank">Rank</label>
                <input type="text" name="Rank" placeholder="Rank" />
            </li>
            <li>
                <label for="Firstname">First name</label>
                <input type="text" name="Firstname" placeholder="Firstname" />
            </li>
            <li>
                <label for="Surname">Surname</label>
                <input type="text" name="Surname" placeholder="Surname" />
            </li>
            <li>
                <label for="Rank">Date of Birth</label>
                <input type="text" name="DateofBirth" placeholder="DateofBirth" />
            </li>
            <li>
                <label for="PlaceofBirth">Place of Birth</label>
                <input type="text" name="PlaceofBirth" placeholder="Place of Birth" />
            </li>
            <li> ... </li>
            <li> ... </li>
        </ul>    
    </li>
    <li>
        <ul class="column">
            <li>
                <label for="RankApplied">Rank Applied</label>
                <input type="text" name="RankApplied" placeholder="RankApplied" />
            </li>
            <li>
                <label for="Nationality">Nationality</label>
                <input type="text" name="Nationality" placeholder="Nationality" />
            </li>
            <li>
                <label for="NoOfChildren">No. Of Children</label>
                <input type="text" name="NoOfChildren" placeholder="NoOfChildren" />
            </li>
            <li>
                <label for="NextOfKin">Next Of Kin</label>
                <input type="text" name="NextOfKin" placeholder="NextOfKin" />
            </li>
            <li>
                <label for="NameOfNextOfKin">Name of Next of kin</label>
                <input type="text" name="NameOfNextOfKin" placeholder="NameOfNextOfKin" />
            </li>
            <li> ... </li>
            <li> ... </li>
        </ul>    
    </li>
</ul>

答案 2 :(得分:1)

你可以尝试以下列方式改变它。

<form class="form-style-9 clearfix">

<h2>Personal details</h2>
<ul>
<div id="personal-details">

<div class="col clearfix">
    <div class="test">
    <label for="Rank">Rank</label>
    <input id="Rank" type="text" name="Rank" class="field-style field-split25 align-left" placeholder="Rank" /> 
    </div>
    <div class="test">
    <label for="fname">First Name</label>
    <input id="fname" type="text" name="fname" class="field-style field-split25 align-left" placeholder="First Name" /> 
    </div>
    <div class="test">
    <label for="sname">Surename</label>
    <input id="sname" type="text" name="sname" class="field-style field-split25 align-left" placeholder="Surename" />   
    </div>
    <div class="test">
    <label for="pob">Place of Birth</label>
    <input id="pob" type="text" name="pob" class="field-style field-split25-4 align-left" placeholder="Place of Birth" />
    </div>
</div>
<div class="col clearfix">
    <div class="test">
    <label for="RankApplied">Rank Applied</label>
    <input id="RankApplied" type="text" name="RankApplied" class="field-style field-split25 align-left" placeholder="Rank Applied" />   
    </div>
    <div class="test">
    <label for="nationality">Nationality</label>
    <input id="nationality" type="text" name="nationality" class="field-style field-split25 align-left" placeholder="Nationality" />    
    </div>
    <div class="test">
    <label for="noc">No. of children</label>
    <input id="noc" type="number" name="noc" class="field-style field-split25 align-left" placeholder="No. of children" />  
    </div>

</div>
<div class="col clearfix">
<div class="test">
    <label for="RankApplied">Rank Applied</label>
    <input id="RankApplied" type="text" name="RankApplied" class="field-style field-split25 align-left" placeholder="Rank Applied" />   
    </div>
    <div class="test">
    <label for="nationality">Nationality</label>
    <input id="nationality" type="text" name="nationality" class="field-style field-split25 align-left" placeholder="Nationality" />    
    </div>
    <div class="test">
    <label for="noc">No. of children</label>
    <input id="noc" type="number" name="noc" class="field-style field-split25 align-left" placeholder="No. of children" />  
    </div>
</div>
<div class="col clearfix">
<div class="test">
    <label for="RankApplied">Rank Applied</label>
    <input id="RankApplied" type="text" name="RankApplied" class="field-style field-split25 align-left" placeholder="Rank Applied" />   
    </div>
    <div class="test">
    <label for="nationality">Nationality</label>
    <input id="nationality" type="text" name="nationality" class="field-style field-split25 align-left" placeholder="Nationality" />    
    </div>
    <div class="test">
    <label for="noc">No. of children</label>
    <input id="noc" type="number" name="noc" class="field-style field-split25 align-left" placeholder="No. of children" />  
    </div>
</div>

</form>
  

块引用

.form-style-9{

    background: #FAFAFA;
    padding: 30px;
    margin: 50px auto;
    box-shadow: 1px 1px 25px rgba(0, 0, 0, 0.35);
    border-radius: 10px;
    border: 6px solid #305A72;
}
.form-style-9 ul{
    padding:0;
    margin:0;
    list-style:none;
}
.form-style-9 ul li{
    display: block;
    margin-bottom: 1.25%;
    min-height: 58px;
}
.form-style-9 ul li  .field-style{
    box-sizing: border-box; 
    padding: 8px;
    outline: none;
    border: 1px solid #B0CFE0;
}
.form-style-9 ul li  .field-style:focus{
    box-shadow: 0 0 5px #B0CFE0;
    border:1px solid #B0CFE0;
}
.form-style-9 ul li .field-split{
    width: 49%;
}
.form-style-9 ul li .field-split25{
   /* float: left;
    width: 24%;
    margin-right: 1.25%;*/
    height: 40px;
}
.form-style-9 ul li .field-split25-4{
    /*float: left;
    width: 24%;
    margin-right: 0;*/
    height: 40px;
}
.form-style-9 ul li .field-full{
    width: 100%;
}
.form-style-9 ul li input.align-left{
    /*float:left;*/
}
.form-style-9 ul li input.align-right{
    float:right;
}
.form-style-9 ul li textarea{
    width: 100%;
    height: 100px;
}
.form-style-9 ul li input[type="button"], 
.form-style-9 ul li input[type="submit"] {
    box-shadow: inset 0px 1px 0px 0px #3985B1;
    background-color: #216288;
    border: 1px solid #17445E;
    display: inline-block;
    cursor: pointer;
    color: #FFFFFF;
    padding: 8px 18px;
    text-decoration: none;
    font: 12px Arial, Helvetica, sans-serif;
}
.form-style-9 ul li input[type="button"]:hover, 
.form-style-9 ul li input[type="submit"]:hover {
    background: linear-gradient(to bottom, #2D77A2 5%, #337DA8 100%);
    background-color: #28739E;
}


.formcol{
float: left;
padding: 2px;
} 
.formcol label {

font-weight: bold;
display:block;
} 
ul {
  margin: 0;
  padding: 0;
  list-style-type: none;
}
.test {
  margin-right: 1.25%;
  margin-bottom: 1.25%;
}
.image-div {
    margin-right: 4%;
    float:right;
    width: 200px;
    height: 200px;      
}
.image-upload {
  float:right;
  width: 100%;
  margin-right: 1.25%;
  margin-bottom: 1.25%;
}
.image-preview {
  float:right;
  width: 150px;
  height: 150px;
  margin-right: 1.25%;
  margin-bottom: 1.25%;
  position:relative;
  border: 1px solid #B0CFE0;
}
.test4 {
  float:left;
  width: 23%;
  margin-right: 0;
  margin-bottom: 1.25%;
}
.test-label {  
  width: 23%;
  margin-right: 1.25%;
  margin-bottom: 0px;
  padding:0px;
  font-weight: bold;
}
.test-label1 {  
  width: 23%;
  margin-right: 1.25%;
  margin-bottom: 0px;
  padding:0px;
}
.removeRow{
height:auto;
width:auto;
max-width:12px;
max-height:12px;
}
.div-format-30 {
  width: 90%;
  margin-right: 1.25%;
  margin-bottom: 0;
  margin-top: 1.25%;
  border: 1px solid #B0CFE0;
}
.div-format-30 td{
    margin-top:20px;
  float:left;
  width: 90%;
  margin-right: 1.25%;
  margin-bottom: 0;
  margin-top: 1.25%;
  border: 1px solid #B0CFE0;
}
.split33 {
  float:left;
  width: 28%;
  margin-right: 1.25%;
  margin-bottom: 1.25%;
}
.split33right {
  float:right;
  width: 23%;
  margin-right: 0;
  margin-bottom: 1.25%;
}
.div-format {
  font-size:12px;
  float:left;
  width: 23%;
  margin-right: 1.25%;
  margin-bottom: 1.25%;
  border: 1px solid #B0CFE0;
}
.test4 {
  float:left;
  width: 23%;
  margin-right: 0;
  margin-bottom: 1.25%;
}
.header {
  float:left;
  width: 100%;
  margin-right: 1.25%;
  margin-bottom: .25%;
}
label {
  display: block;
  text-align: center;
}
input {
  width: 100%;
}
.form-style-9 ul li input[type="submit"] {
  width: 10%;
}
.resume-title {
    color: #af5d86;
}
.container {
    margin-left: 2%;
    margin-right: 2%;
}
.personal-details {
    padding-bottom:1.25%;
}
.col{
    float: left;
    width: 23%;
    margin-right: 1.25%;
    margin-bottom: 1.25%;
    border: 1px solid #c2c2c2;
    padding: 1%;
}

答案 3 :(得分:-1)

你必须这样做:

1)使li垂直并更改示例中的内容以使其垂直特定。

2)但是所有li和css的id都会像这样生成边框

<li id='first-column'> any thing</li>
<li id='second-column'> any thing</li>

CSS =&GT;

#first-column { border:1px red solid; }

#second-column { border:1px blue solid; }