Array.from(document.querySelectorAll('.js-select-auto-expand'), (input) => {
let parent = input.parentNode;
function updateSize() {
parent.dataset.selectAutoExpand = input.value
}
input.addEventListener('input', updateSize);
updateSize();
});
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
padding: 2rem 4rem;
line-height: 1.5;
color: gray;
}
.article-test {
line-height: 2.5;
}
.select-auto-expand {
position: relative;
display: inline-block;
min-width: 2rem;
width: auto;
height: 30px;
line-height: 28px;
padding: 0 10px;
vertical-align: baseline;
border: 1px solid black;
background-color: transparent;
color: #fafafa;
font-size: 1rem;
}
.select-auto-expand .select-auto-expand__select {
position: absolute;
top: 0px;
bottom: 0;
left: 0;
right: 0;
width: 100%;
min-width: 1em;
height: 100%;
margin: 0 2px;
padding: 0 8px;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
border-radius: 0;
border: 0;
background: transparent;
font: inherit;
}
.select-auto-expand::after {
content: attr(data-select-auto-expand);
display: inline-block;
width: 100%;
min-width: 1em;
white-space: pre-wrap;
font: inherit;
line-height: inherit;
color: inherit;
background: transparent;
visibility: hidden;
opacity: 0;
}
.select-auto-expand:focus-within {
outline: 3px solid rgba(0, 0, 255, 0.3);
}
.select-auto-expand:focus-within input:focus {
outline: none;
}
<form action="#" class="article-test">
<p>
Adipisci ipsum debitis quaerat commodi tenetur? Amet consectetur adipisicing elit. Lorem ipsum dolor sit,
<label class="select-auto-expand" for="pet-select">
<select name="pets" id="pet-select" class="select-auto-expand__select js-select-auto-expand">
<option value="select ...">select ...</option>
<option value="sed qui">sed qui</option>
<option value="veniam iste quis">veniam iste quis</option>
<option value="ipsum debitis">ipsum debitis</option>
<option value="officia excepturi repellendus aperiam">officia excepturi repellendus aperiam</option>
</select>
</label>
veniam iste quis, sed qui non dolores. Porro, soluta. Officia excepturi repellendus aperiam cumque consectetur distinctio, veniam iste quis, sed qui non dolores. Adipisci ipsum debitis quaerat commodi tenetur?
</p>
</form>
)。 - undefined