/* Copyright (c) 2011 The Chromium Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. * * This is the stylesheet used by the touch-enabled new tab page */ html { /* It's necessary to put this here instead of in body in order to get the background-size of 100% to work properly */ height: 100%; } body { /* This newer linear-gradient form works on Chrome but not mobile Safari */ /*background: -webkit-linear-gradient(top,#252c39,#3e485b,#252c39); */ background: -webkit-gradient(linear, left top, left bottom, from(#252c39), color-stop(0.5,#3e485b), to(#252c39)); background-size: auto 100%; font-family: segoe ui, arial, helvetica, sans-serif; font-size: 14px; color: white; margin: 0; /* Don't highlight links when they're tapped. Safari has bugs here that show up as flicker when dragging in some situations */ -webkit-tap-highlight-color: transparent; /* Don't allow selecting text - can occur when dragging */ -webkit-user-select: none; } /* The frame is what the slider fits into */ #apps-frame { /* We want this to fill the window except for the region used by footer */ position: fixed; width: 100%; top: 0; bottom: 60px; /* must match #footer height */ overflow: hidden; } /* The list holds all the pages and is what the touch events are attached to */ #apps-page-list { /* fill the apps-frame */ height: 100%; display: -webkit-box; } /* The apps-page is the slider card that is moved. */ .apps-page { -webkit-box-sizing: border-box; padding: 29px; /* TODO(rbyers): Don't want the final row centered, but would like all rows * centered. Really I want the page-content width determined by the boxes * inside of it, but perhaps webkit-box doesn't support that. * Note that instead of display:inline-block for the apps, I could use * float:left and have a .app-container:first-child { clear:both; } rule, * but I'd have to figure out some way to get the vertical position reset. text-align:center; */ } .app-container { width: 128px; height: 128px; padding: 16px; display: inline-block; vertical-align: top; } .app { text-align: center; width: 128px; height: 128px; /* Animate effects to/from the grabbed state, and the position when drop is cancelled. I'd like to also animate movement when an app is re-positioned, but since chrome is doing the layout there is no property to animate. TODO(rbyers): Should we take over responsibility for app layout ourself like the classic NTP's most-visited icons? Or should we extend webkit somehow to support animation of the position of browser laid-out elements. */ -webkit-transition-property: -webkit-transform, opacity, zIndex; -webkit-transition-duration: 200ms; /* Don't offer the context menu on long-press. */ -webkit-touch-callout: none; /* Work-around regression bug 74802 */ -webkit-transform: scale3d(1, 1, 1); } .app span { text-decoration: none; /* TODO(rbyers): why isn't ellipsis working? */ text-overflow: ellipsis; white-space: nowrap; overflow: hidden; color: white; } .app img { display: block; width: 96px; height: 96px; margin-left: auto; margin-right: auto; /* -webkit-mask-image set by JavaScript to the image source */ -webkit-mask-size: 100% 100%; } /* Pressed is set when an app is first touched. By using the mask, pressing causes a darkening effect of just the image */ .app.grabber-pressed img { opacity: 0.8; } /* Grabbed is set (and pressed is cleared) when the app has been held. */ .grabber-grabbed { opacity: 0.8; -webkit-transform: scale3d(1.4, 1.4, 1); } /* Dragging is set (without grabbed being cleared) when a grabbed app is moved */ .grabber-dragging { /* We need to ensure there is no animation applied to its position (or the drag touch may stop being over top of it */ -webkit-transition: none !important; /* Ensure the element has a large z-index so that we can get events for it as it moves over other elements. This is animated as the element flys back, so we want a large value that will stay large until its almost home. */ z-index: 100; } #footer { width: 100%; position: absolute; bottom: 0; height: 60px; /* must match #apps-frame bottom */ overflow: hidden; } #dot-list { text-align: center; margin: 0; padding: 0; bottom: 0; list-style-type: none; margin-top: 20px; } .dot { display: inline-block; margin: 10px; width: 10px; height: 10px; background-color: #3d465f; -webkit-box-sizing: border-box; border: 1px solid black; -webkit-border-radius: 2px; -webkit-transition-property: width, height, margin, -webkit-transform; -webkit-transition-duration: 500ms; /* Work-around regression bug 74802 */ -webkit-transform: translate3d(0, 0, 0); } #footer.rearrange-mode .dot { margin: 0px 20px; width: 30px; height: 30px; } .dot.selected { background-color: #b3bbd3; } .dot.new { -webkit-transform: translate3d(0, 40px, 0); } #trash { position: absolute; width: 110px; height: 100%; right: 0px; bottom: 0px; background-image: url('../shared/images/trash.png'); background-size: 40px 40px; background-repeat: no-repeat; background-position: 40px 12px; /* Work-around chromium bug 74730 by using translate instead of the GPU-accelerated translate3d */ -webkit-transform: translate(80px, 0); -webkit-transition-property: -webkit-transform; -webkit-transition-duration: 500ms; } #trash.hover { background-image: url('../shared/images/trash-open.png'); } .app.trashing img { opacity: 0.3; } #footer.rearrange-mode #trash { -webkit-transform: translate(0, 0); } /* Ensure template items are never drawn when the page initially loads */ #app-template { display: none; }