I made a label because I wanted to apply css to the checkbox.
However, the label is not working except for the checkbox whose id is 'checkall'.
<div class="divCenter cartDiv">
<ul>
<li class="selectallforcart">
<div class="hanadiv">
<input type="checkbox" id="checkall" class="check" value="0"/>
<label for="checkall"></label> selelct All
</div>
</li>
</ul>
<% ArrayList<LikePdVO> likeList = (ArrayList<LikePdVO>)(request.getAttribute("likeList"));
for(LikePdVO vo : likeList) {
String arr[] = vo.getPhoto().split("\\*");
%>
<div class="cartProduct" id="<%=vo.getPd_id()%>">
<div class="fl cartCheck">
<input type="checkbox" class="check" name="<%=vo.getName()%>"
value="<%=vo.getOrder_price()%>" id="<%=vo.getPd_id()%>">
<label for="<%=vo.getPd_id()%>">
</label>
</div>
this is my code.
.cartDiv input[type=checkbox] + label {
display: inline-block;
width: 20px;
height: 20px;
border: 2px solid #bcbcbc;
cursor: pointer;
}
.cartDiv input[type=checkbox]:checked + label {
background-color: #866744;
}
.cartDiv input[type=checkbox] {
display: none;
}
And this is CSS.
When you mean that the label is not working, I assume you mean that clicking on it doesn't cause the checkbox to be checked?
Either way, the label's text needs to be within the element, so it should be:
<label for="checkall">Select all</label>
And your other labels contain no text, so the label itself is probably quite small, despite the CSS, and therefore not clickable.
You need to set label text in the label tag not out side of it.
<div class="divCenter cartDiv">
<ul>
<li class="selectallforcart">
<div class="hanadiv">
<input type="checkbox" id="checkall" class="check" value="0" />
<label for="checkall">selelct All</label>
</div>
</li>
</ul>
</div>
Related
We have built an html form which contains basic stuff with input and option fields. This works good!
Then we have some fields to choose an option:
<h2 class="space">Franchise</h2>
<div class="spa2">
<p option value="300" data-value="300" class="s2">300</p>
<p option value="500" data-value="500" class="s2 selected">500</p>
<p option value="1000" data-value="1000" class="s2">1000 </p>
<p option value="1500" data-value="1500" class="s2">1500</p>
<p option value="2000" data-value="2000" class="s2">2000 </p>
<p option value="2500" data-value="2500" class="s2">2500</p>
</div>
This displays buttons are to choose specific values, but respective data is not transferred with POST because there are some non-html form type fields.
Is there a way to cheat and tell that this are form fields without change anything?
The code displays this buttons here:
Change them into <form> elements
You're asking the wrong question. This look can be achieved with form elements, which is easier and more reliable than "cheating".
HTML
<form>
<input id="one" type="radio" name="choices" />
<label for="one">300</label>
<input id="two" type="radio" name="choices" />
<label for="two">500</label>
<input id="three" type="radio" name="choices" />
<label for="three">1000</label>
</form>
This example consists of radio inputs. Use this if there is only one choice, otherwise make the type checkbox if you can have multiple choices.
The label should follow the input so that the corresponding label can be styled when the input is checked.
The label is connected to its corresponding radio input with the matching for and id attributes.
The radio input options are linked with the same name="choices" and only one option can be selected.
CSS
input[type=radio] {
display: none;
}
input[type=radio] + label {
padding: 10px;
border: solid 1px;
cursor: pointer;
}
input[type=radio]:checked + label {
background: red;
}
Hide the radio buttons with display: none
Style the labels that follow the radio buttons input[type=radio] + label
Change the styles when a radio button is selected with input[type=radio]:checked + label
Make the cursor a pointer with cursor: pointer on the labels
Full Example
form {
margin: 20px;
}
input[type=radio] {
display: none;
}
input[type=radio]+label {
padding: 10px;
border: solid 1px;
cursor: pointer;
}
input[type=radio]:checked+label {
background: red;
}
<form>
<input id="one" type="radio" name="choices" />
<label for="one">300</label>
<input id="two" type="radio" name="choices" />
<label for="two">500</label>
<input id="three" type="radio" name="choices" />
<label for="three">1000</label>
</form>
I'm trying out HTML and CSS and am relatively new to the entire concept. I'm currently working on styling a custom checkbox using an image I made from Photoshop. I am not able to figure out why my image is not appearing when I set it this way.
HTML
<ul id="myUL" class="ulChecklist">
<form action="/action_page.php">
<li><input type="checkbox" name="instruction">
<label for="Step1">Step 1</label>
</li>
<li><input type="checkbox" name="instruction">
<label for="Step2">Step 2</label>
</li>
<li><input type="checkbox" name="instruction">
<label for="Step3">Step 3</label>
</li>
</form>
</ul>
CSS
input[type="checkbox"] {
opacity: 0;
}
input[type="checkbox"] + label {
background: url(check.png) left center no-repeat;
}
This is the pre-checked image I want to add.
This is the post-checked image I want to add.
As you can see, it isn't appearing.
Is something wrong with the way I write these codes? I've checked the following Lynda course link: https://www.lynda.com/HTML-tutorials/Styling-radio-buttons-check-boxes-images/612196/646907-4.html
But it isn't working out for me. I would greatly appreciate help from people! Thank you for taking your time to answer a noob's question!
Try this.
ul{
list-style:none;
}
input[type="checkbox"] {
opacity: 0;
position: absolute;
width: 100%;
height: 100%;
z-index: -1;
}
input[type="checkbox"] + label {
background: url(https://i.stack.imgur.com/eiFBl.png) no-repeat 0 center;
padding-left:60px;
line-height:50px;
display: inline-block;
cursor:pointer;
}
input[type="checkbox"]:checked + label {
background: url(https://i.stack.imgur.com/mCst2.png) no-repeat 0 center;
}
.check-wrap{
position:relative;
display: inline-block;
}
<ul id="myUL" class="ulChecklist">
<form action="/action_page.php">
<li>
<div class="check-wrap">
<input type="checkbox" name="instruction" id="Step1">
<label for="Step1">Step 1</label>
</div>
</li>
<li>
<div class="check-wrap">
<input type="checkbox" name="instruction" id="Step2">
<label for="Step2">Step 2</label>
</div>
</li>
<li>
<div class="check-wrap">
<input type="checkbox" name="instruction" id="Step3">
<label for="Step3">Step 3</label>
</div>
</li>
</form>
</ul>
You are on the right path. Just that you need to resize the background image and float it to the left. And one of the most important part is to associate the label with the input checkbox with for and id:
input[type="checkbox"] {
opacity: 0;
}
input[type="checkbox"] + label {
background: url(http://www.iconarchive.com/download/i86039/graphicloads/100-flat-2/check-1.ico) left center no-repeat;
float: left;
padding-left: 25px; /*image width plus extra padding */
background-size: 20px 20px;
}
input[type="checkbox"]:checked + label {
background: url(https://d30y9cdsu7xlg0.cloudfront.net/png/2181-200.png) left center no-repeat;
float: left;
padding-left: 25px; /*image width plus extra padding */
background-size: 20px 20px;
}
<ul id="myUL" class="ulChecklist">
<form action="/action_page.php">
<li><input id="Step1" type="checkbox" name="instruction">
<label for="Step1">Step 1</label>
</li>
<li><input id="Step2" type="checkbox" name="instruction">
<label for="Step2">Step 2</label>
</li>
<li><input id="Step3" type="checkbox" name="instruction">
<label for="Step3">Step 3</label>
</li>
</form>
</ul>
The code you have provided makes no provision for the background label image when the adjacent sibling pseudo-state is :checked.
You'll need to account for both states, e.g: input[type="checkbox"] & input[type="checkbox"]:checked
input[type="checkbox"] + label {
background: url(check.png) left center no-repeat;
}
input[type="checkbox"]:checked + label {
background: url(check-alt.png) left center no-repeat;
}
Edit
You may also need to declare background size properties.
Sorry I am not able to view the Lynda course as I am not a member, but will do my best to answer this.
If I were setting up I would make the following changes to your code:
<ul id="myUL" class="ulChecklist">
<form action="/action_page.php">
<li><input type="checkbox" name="instruction">
<label for="Step1">Step 1</label>
<img src=“./check.png” class=“checkmark-section”>
</li>
</form>
</ul>
Then in the CSS I would callout the checkmark-section class and add in the click effect image under the pseudo class of focus < This is the css word for clicked.
For example:
.checkmark-section:focus {
background: url(./checkmark-active)
}
This will mean that once checkmark-active is clicked, it will swap over to show the depressed check mark image instead. I have not tried this out, but that is how I would expect it to work.
All the best,
Dan
This question already has answers here:
CSS: bolding some text without changing its container's size
(14 answers)
Inline elements shifting when made bold on hover
(30 answers)
Closed 6 years ago.
I've been working with cool designs lately. One of the features works in the way that while checkbox is selected, then its font changes to bold. The problem is that while changing the weight of the font it moves another elements a little bit. Any ideas how to prevent it without positioning labels it with absolute position. I've created a snipped which shows the problem.
li{
list-style:none;
display:inline-block;
margin-right:20px
}
input[type="checkbox"]:checked + label{
font-weight:bold;
}
<ul>
<li>
<input type="checkbox" id="test">
<label for="test"> My label 1
</li>
<li>
<input type="checkbox" id="test2">
<label for="test2"> My label 2
</li>
<li>
<input type="checkbox" id="test3">
<label for="test3"> My label 2
</li>
</ul>
Use text-shadow to mimic the effect:
li {
list-style:none;
display:inline-block;
margin-right:20px
}
input[type="checkbox"]:checked + label{
text-shadow: 1px 0 0 currentColor;
}
<ul>
<li>
<input type="checkbox" id="test">
<label for="test"> My label 1
</li>
<li>
<input type="checkbox" id="test2">
<label for="test2"> My label 2
</li>
<li>
<input type="checkbox" id="test3">
<label for="test3"> My label 2
</li>
</ul>
You can use a small CSS Hack for this.
Just like (this will be font specific):
input[type="checkbox"]:checked + label{
font-weight: bold;
display: inline-block;
margin-right: -2.8px; /* cancel the margin on right that is produced */
}
Have a look at the snippet below:
li{
list-style:none;
display:inline-block;
margin-right:20px
}
input[type="checkbox"]:checked + label{
font-weight: bold;
display: inline-block;
margin-right: -2.8px;
}
<ul>
<li>
<input type="checkbox" id="test">
<label for="test"> My label 1</label>
</li>
<li>
<input type="checkbox" id="test2">
<label for="test2"> My label 2</label>
</li>
<li>
<input type="checkbox" id="test3">
<label for="test3"> My label 2</label>
</li>
</ul>
Hope this helps!
maybe you will try bootstrap, with it you can say:
<div class="col-md-4">
<!--CHECKBOX HERE-->
</div>
<div class="col-md-4">
<!--CHECKBOX HERE-->
</div>
<div class="col-md-4">
<!--CHECKBOX HERE-->
</div>
Or you do it by yourself, and say:
html:
<div class="myClass">
<!--CHECKBOXES HERE-->
</div>
<div class="myClass">
<!--CHECKBOXES HERE-->
</div>
<div class="myClass">
<!--CHECKBOXES HERE-->
</div>
css:
.myClass {
width:33.33333%;
}
hope i was able to help you :)
EDIT
You can also give a div several classes:
<div class="myClass1 myClass2 myClass3">
</div>
So you dont have to add the width in every css rule.
I'm new to all of this so I have a question and it's probably silly but here we go anyway.
I have this HTML for a form but I need to use CSS to align my labels to the left of the text box and not have it sit on top. I don't know what CSS to use in order to do this.
<form action="process.php">
<h1>Registration</h1>
<ol>
<li>
<label for="name">Name:</label>
<input type>"text" id="name" name="name">
</li>
</ol>
</form>
There are three more "labels" like this in my ol but I don't feel like typing them all out.
I need the labels to the left aligned with my text boxes.
I have tried:
label{display:inline-block}
And:
label ol{display:inline-block}
I've tried giving floats, the text book (yes this is for a college class) says to do this:
.label{
display:inline-block;
}
But that doesn't seem to work either. Please tell me how on earth I can do this.
Here is my exact CSS so far:
h1{font-family:Oregano;}
form{margin-bottom:1em;}
form ol{list-style-type:none;}
form li{width:100px;
border:1px solid black;
text-align:right;
background-color:black;
color:white;
margin:20px;
height:20px;
white-space:5px;}
It looks exactly like it should, I just have an issue with the alignment of the labels. Have I mentioned how much I hate this crap? I'm changing my major! (not really... but still)
Are you looking for something like this? If so, then no CSS is needed.
<ol>
<li>
<label for="name">Name:</label>
<input type="text" value="some text" />
</li>
<li>
<label for="name">Name:</label>
<input type="text" value="some text" />
</li>
<li>
<label for="name">Name:</label>
<input type="text" value="some text" />
</li>
</ol>
So using your updated CSS here is a Solution:
form {
margin-bottom: 1em;
}
form ol {
list-style-type: none;
}
form li {
margin: 20px;
height: 20px;
white-space: 5px;
}
form label {
width: 100px;
border: 1px solid black;
text-align: right;
background-color: black;
color: white;
}
<form>
<ol>
<li>
<label for="name">Name:</label>
<input type="text" value="some text" />
</li>
<li>
<label for="name">Name:</label>
<input type="text" value="some text" />
</li>
<li>
<label for="name">Name:</label>
<input type="text" value="some text" />
</li>
</ol>
</form>
Both the label and the input must me inline/inline-block
label, input{
display:inline-block;
}
They of course must be next to each other, with the label on the left side in your case.
Btw: it's not a good idea to have labels & inputs inside li elements
If you check your example:
<form action="process.php">
<h1>Registration</h1>
<ol>
<li>
<label for="name">Name:</label>
<input type="text" id="name" />
</li>
</ol>
</form>
you will see that its like you want by default.
So it must be a problem in some CSS rule that gives display block to the input or label tag (or both)
Try this:
label, input {display:inline-block !important}
"!important" at the end is there just in case you need to override some other rule.
Bear with me as I'm not well versed with front end design. How can I get the following checkboxes aligned and stacked neatly as in the picture?
Right now I have them in a row of 9 checkboxes but they're not aligned and are spaced according to the length of the text.
As seen here:
JSFiddle
HTML:
<div class="tags">
<div class="col">
<label>
<input type="checkbox" rel="accounting" />Accounting</label>
<label>
<input type="checkbox" rel="courier" />Courier</label>
<label>
<input type="checkbox" rel="project-management" />Project Management</label>
<label>
<input type="checkbox" rel="video-games" />Video Games</label>
<label>
<input type="checkbox" rel="dentistry" />Dentistry</label>
<label>
<input type="checkbox" rel="librarian" />Librarian</label>
<label>
<input type="checkbox" rel="programmer" />Programmer</label>
<label>
<input type="checkbox" rel="architect" />Architect</label>
</div>
<div class="col">
<label>
<input type="checkbox" rel="photographer" />Photographer</label>
<label>
<input type="checkbox" rel="it" />IT</label>
<label>
<input type="checkbox" rel="artist" />Artist</label>
<label>
<input type="checkbox" rel="web-developer" />Web Developer</label>
<label>
<input type="checkbox" rel="web-designer" />Web Designer</label>
<label>
<input type="checkbox" rel="neurologist" />Neurologist</label>
<label>
<input type="checkbox" rel="veterinarian" />Veterinarian</label>
<label>
<input type="checkbox" rel="teacher" />Teacher</label>
</div>
<div class="col">
<label>
<input type="checkbox" rel="character-animator" />Character Animator</label>
<label>
<input type="checkbox" rel="salesman" />Salesman</label>
<label>
<input type="checkbox" rel="telemarketing" />Telemarketeing</label>
<label>
<input type="checkbox" rel="construction" />Construction</label>
<label>
<input type="checkbox" rel="lawyer" />Lawyer</label>
<label>
<input type="checkbox" rel="actor" />Actor</label>
<label>
<input type="checkbox" rel="policeman" />Policeman</label>
<label>
<input type="checkbox" rel="forestry" />Forestry</label>
</div>
</div>
<!-- end tags -->
CSS:
.filter {
width: 850px;
padding: 25px;
border: 1px solid black;
margin: 25px;
float: left;
}
.col {
width: 100%;
display: block;
margin-right: 10px;
}
label{
vertical-align: top;
float: left;
width: 160px;
}
Edit
I'd use a table layout. Simply add the following CSS:
.tags {
display: table;
}
.col {
display: table-row;
}
.col label {
display: table-cell;
}
Updated fiddle: http://jsfiddle.net/5sz6qdos/13/
Others might use flexbox but I have never used it myself, so not sure how to implement that.
I would probably go a different route, however, to make it more semantic and setup to be more flexible:
<ul class="tags">
<li class="tag"><label>...
....<!--put ALL of your label elements in a single parent element-->
</ul>
and
.tag {
display: block;
float: left;
width: 25%; /*for if you want 4 columns, or*/
width: 120px; /*if you want specific widths*/
}
.tags:after { content: ""; display: table; clear: both; } /*clearfix*/
Using percentages will flex all the columns, or using fixed pixels will allow the elements to flow (my preference).
first of all change your html code like that:
<input type="checkbox" name="accounting" id="accounting" rel="accounting" />
<label for="accounting">Accounting</label>
Do this for every checkbox.
Then Do the follwoing css
.tags{clear:both}
.col{float:left;width:120px;/*adjust your width */}
.col lable, .col input{display:inline-block;}
.col label{width:120px;/*adjust your width */}
.col input{width:20px;/*adjust your width */}
For starters, you're using the label tag wrong. They should not have an input inside them. And how I would do what you're trying to do is something like this:
<div class="col">
<label>Job</label>
<input>
<label>Job</label>
<input>
</div>
<div class="col">
<label>Job</label>
<input>
<label>Job</label>
<input>
</div>
Then in your CSS...
.col {
display: inline-block;
width: 33.3%;
vertical-align: top;}
label {
display: inline-block;
width: 100px;}
input {
display: inline-block;
width: calc(100% - 100px);}
To make sure the columns, labels, and inputs all touch nicely, you have to remove the whitespace. You can either remove it from the code itself, connect elements with comment tags, or set the font-size to 0 on the container. And it wouldn't hurt to throw this in your CSS:
* {
box-sizing: border-box;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;}
So you're kinda having the same problem I mentioned belwo... the text can't be what you're basing off of. You have to set an actual width.
http://jsfiddle.net/tueez7bx/6/
This works, but extends past your limits. You should really consider my other options I provide below.
Also, you can't use ids the way you are. That is incorrect. You'll need to change all the #col to .col.
Second Edit
So based on a comment provided below I have come to realize the goal of what you're trying. Sadly because of the flexibility of text and items you would need to have defined widths for each to line up perfectly. If you don't know what the longest string will be then you will have a problem with risking that string breaking below the words or running into the next checkbox.
You can see that here: http://jsfiddle.net/5sz6qdos/22/
However.. if you extend the width of your container and just have a greater width you will be able to avoid this...
You can see what I am imagining you're asking here: http://jsfiddle.net/5sz6qdos/28/
Before Edit
You're doing well overall...
http://jsfiddle.net/5sz6qdos/3/
.col {
width: 160px;
float: left;
margin-right: 10px;
}
label{
display: block;
}
This does define a width and doesn't allow for full flexibility. It does however give you the option of going to responsive layouts with this data.
To get the boxes the way you want them you cannot use pure CSS. You will need a mix of Javascript. Checkboxes themselves can not be edited with CSS directly. You will need to hide the checkbox with display: none and add an image for the boxes themselves. Once you have done this you will need to use jQuery to check and uncheck each box. That is the only way to get the exact look.
SO has a lot of answers out there for the jQuery part.
Thanks to all for the knowledge and push in the right direction.
Here is the working solution I found while setting line widths.
JSFiddle
HTML
<div class="filter">
<h3 style="text-align: center;">Blog Profession Filters</h3>
<ul class="checkbox">
<li>
<input type="checkbox" id="cb1" rel="accounting" value="accounting" />
<label for="cb1">Accounting</label>
</li>
<li>
<input type="checkbox" id="cb2" rel="project-management" value="project-management" />
<label for="cb2">Project Management</label>
</li>
<li>
<input type="checkbox" id="cb3" rel="information technology" value="information-technology" />
<label for="cb3">Information Technology</label>
</li>
<li>
<input type="checkbox" id="cb4" rel="courier" value="courier" />
<label for="cb4">Courier</label>
</li>
<li>
<input type="checkbox" id="cb5" rel="video-games" value="video-games" />
<label for="cb5">Video Games</label>
</li>
<li>
<input type="checkbox" id="cb6" rel="web-development" value="web-development" />
<label for="cb6>">Web Development</label>
</li>
<li>
<input type="checkbox" id="cb7" rel="veterinarian" value="veterinarian" />
<label for="cb6>">Veterinarian</label>
</li>
<li>
<input type="checkbox" id="cb8" rel="web-designer" value="web-designer" />
<label for="cb6>">Web Designer</label>
</li>
<li>
<input type="checkbox" id="cb9" rel="attorney" value="attorney" />
<label for="cb9>">Attorney</label>
</li>
<li>
<input type="checkbox" id="cb10" rel="medical-practitioner" value="medical-practitioner" />
<label for="cb10>">Medical Practitioner</label>
</li>
<li>
<input type="checkbox" id="cb11" rel="telemarketing" value="telemarketing" />
<label for="cb11>">Telemarketing</label>
</li>
<li>
<input type="checkbox" id="cb12" rel="construction" value="construction" />
<label for="cb12>">Construction</label>
</li>
</ul>
</div>
<div id="results">
<ul class="results">
<li class="accounting" style="list-style-type:none"> Accounting
</li>
<li class="project-management" style="list-style-type:none"> Game QA Project Management
</li>
<li class="information-technology" style="list-style-type:none"> Information Technology
</li>
<li class="courier" style="list-style-type:none"> Courier / Parcel Delivery
</li>
<li class="video-games" style="list-style-type:none"> Video Games
</li>
<li class="web-development" style="list-style-type:none"> Web Development
</li>
<li class="veterinarian" style="list-style-type:none"> Veterinarian
</li>
<li class="web-designer" style="list-style-type:none"> Wed Designer
</li>
<li class="attorney" style="list-style-type:none"> Attorney
</li>
<li class="medical-practitioner" style="list-style-type:none"> Medical Practitioner
</li>
<li class="telemarketing" style="list-style-type:none"> Telemarketing
</li>
<li class="construction" style="list-style-type:none"> Construction
</li>
</ul>
</div>
CSS
.filter {
width: 850px;
padding: 25px;
border: 1px solid black;
margin: 25px;
}
ul.checkbox {
margin: 0;
padding: 0;
margin-left: 20px;
list-style: none;
}
ul.checkbox li input {
margin-right: .25em;
}
ul.checkbox li {
border: 1px transparent solid;
display:inline-block;
width:12em;
}
ul.checkbox li label {
margin-left:;
}
ul.checkbox li:hover, ul.checkbox li.focus {
background-color: lightyellow;
border: 1px gray solid;
width: 12em;
}
.results {
width: 850px;
padding: 25px;
border: 1px solid black;
margin: 25px;
}