This looks like an issue with margin collapse between parent and child.
The margin on div.input-box
collapses with div.block
.
The top and bottom margins of blocks are sometimes combined (collapsed) into a single margin whose size is the largest of the individual margins (or just one of them, if they are equal), a behavior known as margin collapsing. Note that the margins of floating and absolutely positioned elements never collapse.
Parent and first/last child
If there is no border, padding, inline part, block formatting context created, or clearance to separate the margin-top of a block from the margin-top of its first child block; or no border, padding, inline content, height, min-height, or max-height to separate the margin-bottom of a block from the margin-bottom of its last child, then those margins collapse. The collapsed margin ends up outside the parent.
See Mastering margin collapsing @ MDN.
Here's a diagram to help demonstrate.
Notice how the margins for .input-box
go outside of .block
.

One solution is to assign an overflow
value other than the default visible
to the parent element:
.block {
overflow: auto;
}
button.j2,
input[type=text].j2,
input[type=password].j2,
input[type=submit].j2 {
height: 50px;
}
.flex-float-left {
float: left;
}
.flex-float-right {
float: right;
}
.flex-span {
overflow: hidden;
}
.input-box,
.element-box {
position: relative;
margin: 25px;
vertical-align: top;
line-height: 1em;
}
#search,
#name,
#email,
#phone,
#address {
width: 100%;
display: block;
padding: 0 25px;
box-sizing: border-box;
}
#email-box {
width: 50%;
}
#notes-box {
clear: both;
}
#create {
width: 50px;
}
<div class="block">
<div class="element-box flex-float-right">
<button class="j2 round tomato-brush chalk-stroke" id="create">+</button>
</div>
<div class="input-box flex-span" id="search-box">
<input class="j2 round-ends" type="text" name="search" id="search" placeholder="Search..." />
</div>
</div>
Other solutions include:
padding
.block {
padding: 0.1px;
}
button.j2,
input[type=text].j2,
input[type=password].j2,
input[type=submit].j2 {
height: 50px;
}
.flex-float-left {
float: left;
}
.flex-float-right {
float: right;
}
.flex-span {
overflow: hidden;
}
.input-box,
.element-box {
position: relative;
margin: 25px;
vertical-align: top;
line-height: 1em;
}
#search,
#name,
#email,
#phone,
#address {
width: 100%;
display: block;
padding: 0 25px;
box-sizing: border-box;
}
#email-box {
width: 50%;
}
#notes-box {
clear: both;
}
#create {
width: 50px;
}
<div class="block">
<div class="element-box flex-float-right">
<button class="j2 round tomato-brush chalk-stroke" id="create">+</button>
</div>
<div class="input-box flex-span" id="search-box">
<input class="j2 round-ends" type="text" name="search" id="search" placeholder="Search..." />
</div>
</div>
border
.block {
border: 0.1px solid transparent;
}
button.j2,
input[type=text].j2,
input[type=password].j2,
input[type=submit].j2 {
height: 50px;
}
.flex-float-left {
float: left;
}
.flex-float-right {
float: right;
}
.flex-span {
overflow: hidden;
}
.input-box,
.element-box {
position: relative;
margin: 25px;
vertical-align: top;
line-height: 1em;
}
#search,
#name,
#email,
#phone,
#address {
width: 100%;
display: block;
padding: 0 25px;
box-sizing: border-box;
}
#email-box {
width: 50%;
}
#notes-box {
clear: both;
}
#create {
width: 50px;
}
<div class="block">
<div class="element-box flex-float-right">
<button class="j2 round tomato-brush chalk-stroke" id="create">+</button>
</div>
<div class="input-box flex-span" id="search-box">
<input class="j2 round-ends" type="text" name="search" id="search" placeholder="Search..." />
</div>
</div>
display:inline-block
.block {
display: inline-block;
width: 100%;
}
button.j2,
input[type=text].j2,
input[type=password].j2,
input[type=submit].j2 {
height: 50px;
}
.flex-float-left {
float: left;
}
.flex-float-right {
float: right;
}
.flex-span {
overflow: hidden;
}
.input-box,
.element-box {
position: relative;
margin: 25px;
vertical-align: top;
line-height: 1em;
}
#search,
#name,
#email,
#phone,
#address {
width: 100%;
display: block;
padding: 0 25px;
box-sizing: border-box;
}
#email-box {
width: 50%;
}
#notes-box {
clear: both;
}
#create {
width: 50px;
}
<div class="block">
<div class="element-box flex-float-right">
<button class="j2 round tomato-brush chalk-stroke" id="create">+</button>
</div>
<div class="input-box flex-span" id="search-box">
<input class="j2 round-ends" type="text" name="search" id="search" placeholder="Search..." />
</div>
</div>
For reference, also see:
How to disable margin-collapsing?
Margin on child element moves parent element
What You Should Know About Collapsing Margins @ CSS-Tricks