我正在尝试显示像这样的个人资料照片/ – /(斜线表示使用skewX的斜线,连字符表示水平对齐的背景图像).
问题是这段代码也会扭曲背景图像:
- .photo {
- transform: skewX(35deg);
- -ms-transform: skewX(35deg); /* IE 9 */
- -webkit-transform: skewX(35deg); /* Safari and Chrome */
- width: 100px;
- height: 92px;
- border-right: 1px solid black;
- border-left: 1px solid black;
- background-image: url('silhouette.png');
- background-repeat: no-repeat;
- background-position: top left;
- }
- ...
- <div class="photo"></div>
我试图像这样扭转背景偏斜:
- .photo {
- transform: skewX(35deg);
- -ms-transform: skewX(35deg); /* IE 9 */
- -webkit-transform: skewX(35deg); /* Safari and Chrome */
- width: 100px;
- height: 92px;
- border-right: 1px solid black;
- border-left: 1px solid black;
- }
- .photo div {
- transform: skewX(-35deg);
- -ms-transform: skewX(-35deg); /* IE 9 */
- -webkit-transform: skewX(-35deg); /* Safari and Chrome */
- width: 100%;
- height: 100%;
- background-image: url('silhouette.png');
- background-repeat: no-repeat;
- background-position: top left;
- }
- ...
- <div class="photo"><div></div></div>
…但我得到/ [ – ] /(背景不适合斜面).
我整天都在这,请你能帮助我吗?我有编码器的笨蛋!
解决方法
我宁愿使用一个持有背景图像的伪元素.解决方案的关键是使用transform-origin:
- .photo {
- transform: skewX(35deg);
- -ms-transform: skewX(35deg); /* IE 9 */
- -webkit-transform: skewX(35deg); /* Safari and Chrome */
- width: 100px;
- height: 92px;
- border-right: 1px solid black;
- border-left: 1px solid black;
- /* new styles */
- position: relative;
- overflow: hidden;
- -webkit-transform-origin: top left;
- -ms-transform-origin: top left;
- transform-origin: top left;
- }
- .photo::before {
- content: "";
- transform: skewX(-35deg);
- -ms-transform: skewX(-35deg); /* IE 9 */
- -webkit-transform: skewX(-35deg); /* Safari and Chrome */
- background-image: url('http://placekitten.com/200/200');
- background-repeat: no-repeat;
- background-position: top left;
- /* new styles */
- position: absolute;
- -webkit-transform-origin: top left;
- -ms-transform-origin: top left;
- transform-origin: top left;
- width: 1000%; /* something ridiculously big */
- height: 1000%; /* something ridiculously big */
- }