我有一个固定大小的绝对定位区域,其中滚动条包含可变大小的内容。
现在我需要将内容包装在两个 div 中,这两个 div 至少与区域一样大,但会扩展以适合内容。
<div id="area">
<div id="outer">
<div id="inner">
<div id="content">content</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
要求:
因此我尝试了以下CSS(JsFiddle中的完整示例):
#area {
/* defined outside */
position: absolute;
width: 100%;
height: 100%;
padding: 20px;
box-sizing: border-box;
overflow: scroll;
}
#outer, #inner {
min-width: 100%;
min-height: 100%;
}
Run Code Online (Sandbox Code Playgroud)
它确实有效,#outer但对 没有影响#inner。我该如何解决它?
更新 如果有帮助的话我只对 Chrome 感兴趣。
另外,我可以接受,如果指出一些带有解释的权威来源,这可能是不可能的。
更新2
所以我分析了CSS规范并得出结论,我的要求无法满足:
为了使 min-height 工作,它必须绝对定位,或者它包含的块高度不能依赖于内容高度CSS2(10.7)
我需要自动调整大小,所以既不能#inner也#outer不能绝对定位。这意味着包含块必须具有指定的高度。
因此#outer不能包含 的块#inner。这给我留下了#area …
比较相同泛型类型的两个实例的最佳(最简洁和最佳)方法是什么,以便比较标识(相同对象,因此不调用)和值相等的值类型的引用类型.Equals
目前我这样做:
static bool IdentityEquals<T>(T x, T y)
{
return typeof(T).IsValueType
? EqualityComparer<T>.Default.Equals(x, y)
: ReferenceEquals(x, y);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试为所有Loaded事件注册处理程序:
EventManager.RegisterClassHandler(typeof(UIElement), FrameworkElement.LoadedEvent, new RoutedEventHandler(OnRoutedEvent), true);
EventManager.RegisterClassHandler(typeof(ContentElement), FrameworkContentElement.LoadedEvent, new RoutedEventHandler(OnRoutedEvent), true);
EventManager.RegisterClassHandler(typeof(UIElement), FrameworkElement.UnloadedEvent, new RoutedEventHandler(OnRoutedEvent), true);
EventManager.RegisterClassHandler(typeof(ContentElement), FrameworkContentElement.UnloadedEvent, new RoutedEventHandler(OnRoutedEvent), true);
Run Code Online (Sandbox Code Playgroud)
不幸的是,我的处理程序只被调用Window和DatePicker的后代.它不适用于任何其他类型.
谁能解释这种行为?这是一个错误,遗憾的是他们选择忽略它.
是否有其他方式可以通知应用程序/窗口中的任何新元素?
我有一个属性,必须包含很长的字符串列表,并提高可读性我想在单独的行中定义每个值(很长),如:
<property name="items" separator=",">
<item>A</item>
<item>B</item>
</property>
Run Code Online (Sandbox Code Playgroud)
相当于
<property name="items" value="A,B" />
Run Code Online (Sandbox Code Playgroud)
或类似于<path>+ <pathconvert>但不扩展路径的东西.
可能吗 ?
我有一个管道函数,它在begin块中分配一些需要在最后处理的资源.我已尝试在end块中执行此操作但在函数执行中止时不会调用它,例如ctrl+ c.
如何修改以下代码以确保$sw始终处置:
function Out-UnixFile([string] $Path, [switch] $Append) {
<#
.SYNOPSIS
Sends output to a file encoded with UTF-8 without BOM with Unix line endings.
#>
begin {
$encoding = new-object System.Text.UTF8Encoding($false)
$sw = new-object System.IO.StreamWriter($Path, $Append, $encoding)
$sw.NewLine = "`n"
}
process { $sw.WriteLine($_) }
# FIXME not called on Ctrl+C
end { $sw.Close() }
}
Run Code Online (Sandbox Code Playgroud)
编辑:简化功能
我在目标中定义了一个目录列表:
<Target>
<ItemGroup>
<FooDirs Include="Foo\Dir1" />
<FooDirs Include="Foo\Dir2" />
</ItemGroup>
<Target>
Run Code Online (Sandbox Code Playgroud)
现在我想在里面创建所有文件的列表@(FooDirs):
<ItemGroup>
<FooFiles Include="@(FooDirs -> '%(Identity)\**\*')" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用,结果列表包含文字字符串:"Foo\Dir1\**\*;Foo\Dir2\**\*". 但是,如果我使用已弃用的<CreateItem>任务,它可以正常工作:
<CreateItem Include="@(FooDirs -> '%(Identity)\**\*')">
<Output TaskParameter="Include" ItemName="FooFiles" />
</CreateItem>
Run Code Online (Sandbox Code Playgroud)
这是一个错误还是我错过了什么?
如何通过动态调度来表示一堆实现相同特征的不可变无状态单例?
类型/值在编译时不会被知道,因此需要虚拟方法。
理想情况下,所有值都形成可区分的联合,但我已经知道不可能在 Rust 中实现枚举值。
即相当于以下 Scala 代码:
sealed trait Kind {
def name(): String
}
object A extends Kind {
def name() = "A"
}
object B extends Kind {
def name() = "B"
}
def use(x: Kind) = {
println(s"Kind is ${x.name()}")
}
def main() = {
use(A)
}
Run Code Online (Sandbox Code Playgroud)
对于不了解 Scala 的人 - 上面的示例仅分配 2 个对象,然后传递一个引用(简单指针)。
我想出了这样的东西,但发现它很糟糕:
trait Kind {
fn name(&self) -> String;
}
struct A;
struct B;
impl Kind for A {
fn name(&self) -> String …Run Code Online (Sandbox Code Playgroud)