javascript - inline an input and set its width to fit the content in CSS or jQuery
问题描述
I am using jQuery QueryBuilder plugin. I have an input in Bootstrap 3 as below :
I want it to fit the content based on the width of the screen, on large monitors the input doesn't enlarge in width. I tried some css tricks but couldn't make it work.
I set
input {
min-width: 100%;
max-width: 100%;
}
and the div
containing the input
.rule-value-container {
width: 100%;
display: inline-block;
}
now the input
fits the content but it's in separate line. I tried display: inline-block !important;
as well with parents div but didn't work.
Any suggestions please what I am missing in my code ? Thank you.
$(document).ready(function() {
$('#queryBuilder').queryBuilder({
filters: [
{ id: 'name',
label: 'Name',
type: 'string',
operators: ['equal','contains'] }
]
});
});
.rule-value-container {
width: 100%;
display: inline-block;
}
input {
min-width: 100%;
max-width: 100%;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<link rel='stylesheet' href="https://cdn.jsdelivr.net/npm/jQuery-QueryBuilder@2.5.2/dist/css/query-builder.default.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jQuery-QueryBuilder@2.5.2/dist/js/query-builder.standalone.min.js"></script>
<script src="https://querybuilder.js.org/node_modules/sql-parser-mistic/browser/sql-parser.min.js"></script>
<div id="queryBuilder"></div>
解决方案
最简单的技巧是使用 css calc() 方法来应用标准分辨率的宽度。接下来使用媒体查询来调整您想要支持的分辨率的宽度百分比。
.rule-value-container {
width: calc(100% - 42%); /*Can use either % value or px */
display: inline-block;
}
@media screen and (min-width: 1400px) {
.rule-value-container {
width: calc(100% - <new % value>);
}
}
更新:添加了 jquery 脚本来调整宽度。
$(document).ready(function() {
$('#queryBuilder').queryBuilder({
filters: [
{ id: 'name',
label: 'Name',
type: 'string',
operators: ['equal','contains']
}
]
});
});
// Alternate option
$(document).on("change","select.form-control",function() {
let containerWidth = $('.rule-container').width();
let ddOne = $(this).parent('.rule-filter-container').width();
let that = this;
setTimeout(function(){
let ddTwo = $(that).parent('.rule-filter-container').siblings('.rule-operator-container').width();
let delBtnWidth = $('.btn-danger').width();
let totalWidth = (containerWidth - (ddOne + ddTwo + delBtnWidth)) - 45;
$(that).parent('.rule-filter-container').siblings('.rule-value-container').width(totalWidth+'px');
}, 50);
});
.rule-value-container {
display: inline-block;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<link rel='stylesheet' href="https://cdn.jsdelivr.net/npm/jQuery-QueryBuilder@2.5.2/dist/css/query-builder.default.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jQuery-QueryBuilder@2.5.2/dist/js/query-builder.standalone.min.js"></script>
<script src="https://querybuilder.js.org/node_modules/sql-parser-mistic/browser/sql-parser.min.js"></script>
<div id="queryBuilder"></div>
推荐阅读
- django - Django 表单发布 keyerror
- c# - 我是我的应用程序的网络邮件。我的帐户中没有收到邮件本地邮件工作正常,但网络邮件不工作
- drupal-7 - 如何从出口页面中的元标记获取令牌值 - Drupal 7?
- azure - 每次登录时都会提示用户同意应用程序 - Azure AD v2.0
- nginx - 获取每个 nginx 工作人员的当前活动连接数
- java - 如何在启用 Cloud Config Server 和 SSH 的 Spring Boot 应用程序中从“Resources”文件夹中读取 known_hosts 文件
- codenameone - 将值选择到下拉列表后,表单向下滚动
- python - 使用公司代理后面的 python 脚本下载文件
- ionic-framework - 离子布局中网格的中心行
- javascript - 将输入值与数组元素相关联