javascript - 在弹性框中旋转文本后保持其他样式
问题描述
我正在使用表(Ag-grid)。标题的样式是可授予的(可以通过道具更改),即可以更改高度/宽度和文本对齐方式。由于我无法访问每个标题单元格中的标题高度,因此我在标题单元格中使用弹性框来正确保持文本对齐(垂直/水平)。
现在我收到了一个新的更改请求,要求有另一种样式以使 text(HeaderName) 垂直因此用户可以为那些宽度不足的 Header 旋转文本。像这样在此处输入图像描述。为此,我在 HeaderCellRenderer 中进行了更改
我的问题是,如果我旋转文本,我的垂直对齐(上/中/下)和水平对齐(左/中/右)与客户预期的不一致。所有对齐方式都应与未旋转文本时相同。
请协助我这样做。
这是我附上的一个 plunker 链接,只是为了向您展示我的 Header 单元格是(Its dummy),以及我面临的问题。应用旋转后,文本对齐(上/下/左/右)系统的行为应与非旋转相同。
// Add your code here
function hori(value) {
var x = document.getElementsByClassName("outer");
x[0].style.textAlign = value;
// alert('changed');
}
function vertical(value) {
var x = document.getElementsByClassName("inner");
x[0].style.alignSelf = value;
// alert('changed');
}
function rotate() {
var x = document.getElementsByClassName("inner");
x[0].style.transform = 'rotate(-90deg)';
}
function rotate() {
var x = document.getElementsByClassName("inner");
x[0].style.transform = 'rotate(-90deg)';
}
function Notrotate() {
var x = document.getElementsByClassName("inner");
x[0].style.transform = 'none';
}
/* Add your styles here */
.outer {
text-align : center;
display : flex;
height : 100px;
width : 200px;
background-color : yellow;
color: red;
overflow : hidden;
border : 1px solid black;
}
.inner {
align-self : center;
width : 100%;
}
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="lib/style.css">
<script src="lib/script.js"></script>
</head>
<body>
<button onclick="rotate()">rotate</button>
<button onclick="Notrotate()">Not rotate</button>
<button onclick="vertical('flex-start')">v-top</button>
<button onclick="vertical('center')">v-center</button>
<button onclick="vertical('flex-end')">v-end</button>
<button onclick="hori('left')">left</button>
<button onclick="hori('center')">center</button>
<button onclick="hori('right')">right</button>
<hr/>
<div class="outer">
<div class="inner">
text
</div>
</div>
</body>
</html>
解决方案
您必须定义一个“转换原点”并删除“宽度:100%”然后您必须使用 flex 属性移动您的内部容器(justify-content)
// Add your code here
function hori(value) {
var x = document.getElementsByClassName("outer");
x[0].style.justifyContent = value;
// alert('changed');
}
function vertical(value) {
var x = document.getElementsByClassName("inner");
x[0].style.alignSelf = value;
// alert('changed');
}
function rotate() {
var x = document.getElementsByClassName("inner");
x[0].style.transform = 'rotate(-90deg)';
}
function rotate() {
var x = document.getElementsByClassName("inner");
x[0].style.transform = 'rotate(-90deg)';
}
function Notrotate() {
var x = document.getElementsByClassName("inner");
x[0].style.transform = 'none';
}
.outer {
text-align : center;
display : flex;
height : 100px;
width : 200px;
background-color : yellow;
color: red;
border : 1px solid black;
}
.inner {
align-self : center;
transform-origin: center;
}
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="lib/style.css">
<script src="lib/script.js"></script>
</head>
<body>
<button onclick="rotate()">rotate</button>
<button onclick="Notrotate()">Not rotate</button>
<button onclick="vertical('flex-start')">v-top</button>
<button onclick="vertical('center')">v-center</button>
<button onclick="vertical('flex-end')">v-end</button>
<button onclick="hori('flex-start')">left</button>
<button onclick="hori('center')">center</button>
<button onclick="hori('flex-end')">right</button>
<hr/>
<div class="outer">
<div class="inner">
text
</div>
</div>
</body>
</html>
推荐阅读
- javascript - 如何旋转应用程序以及 UWP Web 应用程序中播放的内容?
- mongodb - 如何从给定列mongodb中同时具有相同值的多条记录中获取最后一条记录
- facebook - facebook api 事件提要和评论已弃用
- vba - Word文档中的条件查找和替换段落标记
- node.js - 'bower' 和 'gulp' 未被识别为内部或外部命令
- google-sheets - 如何将一个单元格的值与整列合并?
- kubernetes - Kubernetes Pod 命名规则
- sql - 如何通过 SQL Server 将重复记录的索引排序到另一列
- java - 一对多关系中的实体仅在应用程序重新启动后可见(JPA 和 PostgreSQL)
- xml - XDMF - 使用 Hyperslab 从矢量场中提取分量