当我尝试在鼠标悬停时缩放div时,文本会抖动/抖动并且动画不平滑.这在FireFox中尤其明显,但也可以在Chrome中看到.
我可以做些什么改变来使动画流畅吗?
JS小提琴:https://jsfiddle.net/jL4dbxf9/
.mtw {
max-width: 200px;
margin: 0 auto;
}
.mt .mp {
text-align: center;
}
.mt .mp .ma {
color: #fff;
font: 800 40px OpenSansBold, Arial, Helvetica, sans-serif;
min-height: 60px;
}
.mt .header-blue {
background: blue;
}
.mt {
transition: all 0.4s linear;
}
.mt:hover{
z-index: 1;
transform: scale(1.1);
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-o-transform: scale(1.1);
-ms-transform: scale(1.1);
}
Run Code Online (Sandbox Code Playgroud)
<div class="mtw">
<div class="mt">
<div class="header-blue">
<h2 class="mp">
<span class="ma">49</span>
</h2>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我希望能够从Excel有效地检索格式化单元格值的多维数组.当我说格式化的值时,我的意思是我希望它们与Excel中出现的完全相同,并应用了所有单元格的NumberFormat.
Range.Value和Range.Value2属性非常适用于将大量单元格的单元格值检索到多维数组中.但那些是实际的单元格值(至少在Range.Value2中,我不太确定Range.Value对某些值的作用).
如果我想检索单元格中显示的实际文本,我可以使用Range.Text属性.这有一些警告.首先,您需要自动调整单元格,否则您可能会得到类似####的内容,如果不是所有文本都显示当前单元格宽度.其次,Range.Text一次不能用于多个单元格,因此您必须遍历该范围内的所有单元格,这对于大型数据集来说可能非常慢.
我尝试的另一种方法是将范围复制到剪贴板中,然后将剪贴板文本解析为制表符分隔的数据流并将其传输到多维数组中.这看起来效果很好,虽然它比获取Range.Value2要慢,但对于大型数据集来说,获取Range.Text要快得多.但是,我不喜欢使用系统剪贴板的想法.如果这是一个非常长的操作需要60秒并且当该操作正在运行时,用户可能决定切换到另一个应用程序并且非常不高兴地发现他们的剪贴板不起作用或者其中具有神秘数据.
有没有办法可以有效地将格式化的单元格值检索到多维数组?
我添加了一些示例代码,这些代码是从VSTO应用程序中的几个功能区按钮运行的.第一个设置了一些好的测试值和数字格式,第二个按钮将显示在MessageBox中使用这些方法之一检索它们时的样子.
我的系统上的示例输出是(由于区域设置,它可能与您的不同):
Output using Range.Value
1/25/2008 3:19:32 PM 5.12345
2008-01-25 15:19:32 0.456
Output using Range.Value2
39472.6385648148 5.12345
2008-01-25 15:19:32 0.456
Output using Clipboard Copy
1/25/2008 15:19 5.12
2008-01-25 15:19:32 45.60%
Output using Range.Text and Autofit
1/25/2008 15:19 5.12
2008-01-25 15:19:32 45.60%
Run Code Online (Sandbox Code Playgroud)
Range.Text和Clipboard方法产生正确的输出,但如上所述它们都有问题:Range.Text很慢而剪贴板是不好的做法.
private void SetSampleValues()
{
var sheet = (Microsoft.Office.Interop.Excel.Worksheet) Globals.ThisAddIn.Application.ActiveSheet;
sheet.Cells.ClearContents();
sheet.Cells.ClearFormats();
var range = sheet.Range["A1"];
range.NumberFormat = "General";
range.Value2 = "2008-01-25 15:19:32";
range = sheet.Range["A2"];
range.NumberFormat = "@";
range.Value2 = "2008-01-25 15:19:32";
range …
Run Code Online (Sandbox Code Playgroud) 我希望能够从csv文件中解析日期和/或日期时间值,并获取其DateTime格式(或使用Excel术语NumberFormat)。
例如,我想将“ 2008-06-07 00:00:00.000”传递给函数,并使其返回类似“ yyyy-MM-dd hh:mm:ss.000”的信息。
要注意的是,csv文件中可能有许多可能的日期格式,而且它们都不是提前知道的,所以我不能使用DateTime.TryParseExact(),因为它要求您提前知道DateTime格式字符串才能进行测试查看它是否具有特定值。
通过了解日期格式,我可以将其设置为Excel中的自定义数字格式,然后输入值,它将与csv文件的文本完全一样,同时还可以在Excel公式中使用它。
当然,可能存在歧义,因此理想情况下,获取可能的日期格式列表,然后通过查看可能的日期格式列表的交集,对多个日期进行检查以删除某些选项会比较好。
我刚刚发现了NodaTime API,看起来它可以执行类似的操作,但是我还没有看到示例代码可以实现此目的,因为有关类似查询的大多数问题都被要求提供早期版本,而没有似乎受到支持。
这样做的任何其他方法也将不胜感激。
正如乔恩·斯凯特(Jon Skeet)所说,我认为做到这一点的唯一方法是列出常见模式并进行测试。通过执行以下操作,可以获得所有文化的日期时间模式集。但是,此列表将缺少一些可能在使用中常见的自定义模式。例如(我不知道是否常用)yyyy / dd / MM不在列表中。
private static HashSet<string> _patterns;
public static HashSet<string> AllCulturedDateTimePatterns
{
get
{
if (_patterns != null)
return _patterns;
_patterns = new HashSet<string>();
var cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
foreach (var culture in cultures)
{
_patterns.UnionWith(culture.DateTimeFormat.GetAllDateTimePatterns());
}
return _patterns;
}
}
Run Code Online (Sandbox Code Playgroud)