纯CSS3打造自行车

代码和效果如下,复制即可用

  1 <!DOCTYPE html>
  2 <html>
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>快来打造属于你们自己的自行车吧</title>
  6     <style type="text/css">
  7         * {
  8             margin: 0;
  9             padding: 0
 10         }
 11 
 12         ol,
 13         ul {
 14             list-style: none/*去掉圆点或数字*/
 15         }
 16 
 17         .cycle-outer {
 18             width: 534px;
 19             height: 260px;
 20             position: absolute;
 21             /*绝对定位*/
 22             top: 50%;
 23             /*距离顶部*/
 24             margin: -160px 0 0 -267px;
 25             /*距离外边距*/
 26             left: 50%;
 27         }
 28 
 29         .cycle-wrapper {
 30             width: 534px;
 31             height: 260px;
 32             margin: 0 auto;
 33             position: relative;
 34             /*相对定位*/
 35         }
 36 
 37         .cycle-wheel-front {
 38             /*前轮*/
 39             margin: 100px 0 0 330px;
 40         }
 41 
 42         .cycle-wheel-back {
 43             /*后轮*/
 44             margin: 100px 0 0 0px;
 45         }
 46 
 47         .cycle-wheel-outer {
 48             background: transparent;
 49             border: 5px solid #aaa;
 50             border-radius: 50%;
 51             /*画外轮圆圈*/
 52             width: 190px;
 53             height: 190px;
 54             position: absolute;
 55             margin-top: 5px;
 56             animation: wheel-rotate 2s linear infinite;
 57             /*定义动画*/
 58         }
 59         /*轮胎开始旋转*/
 60         @keyframes wheel-rotate {
 61             from {
 62                 transform: rotate(0deg);
 63             }
 64             to {
 65                 transform: rotate(360deg);
 66             }
 67         }
 68 
 69         .cycle-wheel-outer:after {
 70             /*插入内轮胎圆圈*/
 71             background: transparent;
 72             border: 4px solid #EF9058;
 73             border-radius: 50%;
 74             width: 176px;
 75             height: 176px;
 76             position: absolute;
 77             margin: 3px;
 78             content: "";
 79         }
 80 
 81         .spoke {
 82             /*开始画车轮线条*/
 83             position: absolute;
 84             width: 1px;
 85             height: 200px;
 86             background: #ccc;
 87             margin: -5px 0 0 95px;
 88             z-index: 0;
 89         }
 90 
 91         .spoke:after {
 92             /*在后面插入两条*/
 93             content: "";
 94             position: absolute;
 95             width: 1px;
 96             height: 200px;
 97             background: #ccc;
 98             transform: rotate(120deg);
 99         }
100 
101         .spoke:before {
102             /*在前面插入两条*/
103             content: "";
104             position: absolute;
105             width: 1px;
106             height: 200px;
107             background: #ccc;
108             transform: rotate(240deg);
109         }
110         /*轮胎线条完成*/
111 
112         .spoke-container li:nth-child(2) {
113             /*中心点旋转*/
114             transform: rotate(30deg);
115         }
116 
117         .inner-disc {
118             /*画中心轴圆点*/
119             background: #666;
120             width: 20px;
121             height: 20px;
122             border-radius: 50%;
123             position: absolute;
124             left: 50%;
125             margin: -10px 0 0 -10px;
126             top: 50%;
127         }
128 
129         .inner-disc-2 {
130             /*画轮胎中心轴的圆圈*/
131             background: transparent;
132             width: 6px;
133             height: 6px;
134             border: 2px solid #FFF;
135             border-radius: 50%;
136             position: absolute;
137             left: 50%;
138             margin: -5px 0 0 -5px;
139             top: 50%;
140         }
141 
142         .cycle-wheel-back .inner-disc-2:after {
143             /*插入后轮轴心齿轮*/
144             content: "";
145             background: transparent;
146             width: 18px;
147             height: 18px;
148             border-radius: 50%;
149             position: absolute;
150             left: 50%;
151             margin: -13px 0 0 -13px;
152             top: 50%;
153             border: 4px dotted #666;
154         }
155         .cycle-body {
156             margin-left: 125px;
157         }
158         .front-wheel-frame {/*前叉*/
159             background: #5E999B;
160             width: 8px;
161             height: 180px;
162             position: absolute;
163             z-index: 2;
164             transform: rotate(-25deg);
165             margin: -72px 0 0 260px;
166         }
167         .top-frame {/*上管*/
168             background: #5E999B;
169             width: 180px;
170             height: 8px;
171             position: absolute;
172             z-index: 2;
173             margin: -20px 0 0 62px;
174             transform: rotate(-8deg);
175         }
176         .front-frame {/*下管*/
177             background: #5E999B;
178             width: 8px;
179             height: 160px;
180             position: absolute;
181             z-index: 2;
182             transform: rotate(41deg);
183             margin: -36px 0 0 189px;
184         }
185         .center-frame { /*坐杆*/
186             background: #5E999B;
187             width: 8px;
188             height: 205px;
189             position: absolute;
190             z-index: 2;
191             transform: rotate(-33deg);
192             margin: -84px 0 0 75px;
193         }
194         .back-frame {/*后管*/
195             background: #5E999B;
196             width: 8px;
197             height: 136px;
198             position: absolute;
199             z-index: 2;
200             transform: rotate(39deg);
201             margin: -23px 0 0 19px;
202         }
203         .bottom-frame {/*后叉or平管*/
204             background: #5E999B;
205             width: 159px;
206             height: 8px;
207             position: absolute;
208             z-index: 2;
209             margin: 100px 0 0 -16px;
210         }
211         .handlebar-front {/*车把*/
212             width: 60px;
213             height: 8px;
214             background: #5E999B;
215             z-index: 2;
216             position: absolute;
217             margin: -68px 0 0 222px;
218             border-top-left-radius: 3px;
219             border-bottom-left-radius: 3px;
220         }
221         .handlebar-curve {/*车把手*/
222             width: 40px;
223             height: 40px;
224             border: 8px solid #666;
225             border-top-right-radius: 100%;
226             border-bottom-right-radius: 100%;
227             border-bottom-left-radius: 100%;
228             background: transparent;
229             position: absolute;
230             margin: -68px 0 0 258px;
231             border-left: 8px solid transparent;
232             border-top: 8px solid #666;
233             border-bottom: 8px solid #666;
234         }
235         /*座垫*/
236         .seat {
237             width: 50px;
238             height: 10px;
239             background: #666;
240             border-radius: 44%;
241             position: absolute;
242             margin: -73px 0 0 15px;
243         }
244 
245         .seat:after {
246             width: 0px;
247             height: 0px;
248             border-style: solid;
249             border-width: 0 40px 16px 40px;
250             border-color: transparent transparent #666 transparent;
251             content: "";
252             position: absolute;
253             z-index: 3;
254             transform: rotate(-12deg);
255             position: absolute;
256             border-radius: 100%;
257             margin: 0 0 0 -26px;
258         }
259         .seat:before {
260             width: 0px;
261             height: 0px;
262             border-style: solid;
263             border-width: 0 40px 16px 40px;
264             border-color: transparent transparent #666 transparent;
265             content: "";
266             position: absolute;
267             z-index: 3;
268             transform: rotate(179deg);
269             position: absolute;
270             border-radius: 100%;
271             margin: 0 0 0 -26px;
272         }
273         .seat span {
274             width: 32px;
275             height: 19px;
276             background: #666;
277             border-radius: 100%;
278             position: absolute;
279             margin: 1px 0 0 -22px;
280             transform: rotate(-11deg);
281         }
282         /*去掉中心轴的*/
283         .chain-rotation {
284             position: absolute;
285             z-index: 16;
286         }
287         /*中心轴*/
288         .chain-disc-inner {
289             background: #666;
290             width: 18px;
291             height: 18px;
292             border-radius: 50%;
293             position: absolute;
294             margin: 2px;
295             z-index: 4;
296         }
297         .chain-disc-outer {
298             background: #FFF;
299             width: 22px;
300             height: 22px;
301             border: 5px solid #666;
302             border-radius: 50%;
303             position: absolute;
304             margin: 87px 0 0 250px;
305             z-index: 3;
306             content: "";
307         }
308         /*牙盘*/
309         .chain-rods {
310             height: 70px;
311             width: 6px;
312             background: #666;
313             position: absolute;
314             margin: 67px 0 0 263px;
315             z-index: 15;
316             animation: wheel-rotate 2s linear infinite;
317         }
318         .chain-rods:before {
319             content: "";
320             height: 70px;
321             width: 6px;
322             background: #666;
323             position: absolute;
324             transform: rotate(120deg);
325         }
326         .chain-rods:after {
327             content: "";
328             height: 70px;
329             width: 6px;
330             background: #666;
331             position: absolute;
332             transform: rotate(240deg);
333             -webkit-transform: rotate(240deg);
334             -moz-transform: rotate(240deg);
335         }
336         .outer-axle {
337             height: 70px;
338             width: 70px;
339             border-radius: 50%;
340             background: transparent;
341             border: 5px solid #666;
342             position: absolute;
343             margin: 62px 0 0 226px;
344             z-index: 3;
345         }
346 
347         .outer-axle:after {
348             content: "";
349             height: 74px;
350             width: 74px;
351             border-radius: 50%;
352             background: transparent;
353             border: 5px dotted #666;
354             margin: -7px;
355             position: absolute;
356             z-index: 3;
357             animation: wheel-rotate 2s linear infinite;
358         }
359         /*车链子*/
360         .chain-up {
361             background-color: transparent;
362             background-size: 8px 2px;
363             background-position: 0 0, 30px 30px;
364             width: 155px;
365             height: 4px;
366             position: absolute;
367             z-index: 9;
368             background: #EEE;
369             transform: rotate(-11deg);
370             margin: 76px 0 0 98px;
371         }
372         .chain-up:before {
373             content: "";
374             background-color: transparent;
375             background-image: linear-gradient(90deg, #666 25%, transparent 25%, transparent 75%, #666 75%, #666);
376             background-size: 8px 2px;
377             background-position: 0 0, 30px 30px;
378             width: 155px;
379             height: 4px;
380             animation: chainUp 2s linear infinite;
381             position: absolute;
382             z-index: 10;
383         }
384         .chain-bottom {
385             background-color: transparent;
386             background-size: 8px 2px;
387             background-position: 0 0, 30px 30px;
388             width: 155px;
389             height: 4px;
390             position: absolute;
391             z-index: 9;
392             background: #EEE;
393             -webkit-transform: rotate(9deg);
394             -moz-transform: rotate(9deg);
395             transform: rotate(9deg);
396             margin: 127px 0 0 98px;
397         }
398 
399         .chain-bottom:before {
400             content: "";
401             background-color: transparent;
402             background-image: linear-gradient(90deg, #666 25%, transparent 25%, transparent 75%, #666 75%, #666);
403             background-size: 8px 2px;
404             background-position: 0 0, 30px 30px;
405             width: 155px;
406             height: 4px;
407             animation: chainDown 2s linear infinite;
408             position: absolute;
409             z-index: 10;
410         }
411         /*脚踏*/
412         .pedal-rod {
413             height: 120px;
414             width: 6px;
415             background: #666;
416             position: absolute;
417             margin: -25px 0 0 0px;
418         }
419 
420         .pedal-rod:before {
421             width: 40px;
422             height: 10px;
423             background: #666;
424             position: absolute;
425             margin: 10px;
426             content: "";
427             margin: -7px -17px;
428             animation: pedal1 2s linear infinite;
429         }
430 
431         .pedal-rod:after {
432             width: 40px;
433             height: 10px;
434             background: #666;
435             position: absolute;
436             margin: 10px;
437             content: "";
438             margin: 119px -17px;
439             animation: pedal2 2s linear infinite;
440         }
441         /*水壶架*/
442         .bottle-holder {
443             width: 20px;
444             height: 36px;
445             background: #daeded;
446             border: 3px solid #5E999B;
447             position: absolute;
448             margin: 54px 0 0 -25px;
449         }
450 
451         .bottle-holder:after {
452             width: 20px;
453             height: 3px;
454             content: "";
455             background: #5E999B;
456             position: absolute;
457             margin: 24px 0 0 0px;
458         }
459         /*水壶*/
460         .bottle-holder:before {
461             background-color: #daeded;
462             width: 18px;
463             height: 10px;
464             border-radius: 30% / 100%;
465             border-bottom-left-radius: 0;
466             border-bottom-right-radius: 0;
467             content: "";
468             position: absolute;
469             margin-top: -13px;
470             border: 1px solid #98baba;
471             border-bottom: 0;
472         }
473         .bottle-holder span {
474             position: absolute;
475             width: 9px;
476             height: 4px;
477             background: #666;
478             margin: -17px 0 0 5px;
479         }
480         /*车链子动画*/
481         @keyframes chainUp {
482             0% {
483                 background-position: 0 25%;
484             }
485             100% {
486                 background-position: 100% 0;
487             }
488         }
489         @keyframes chainDown {
490             0% {
491                 background-position: 100% 0;
492             }
493             100% {
494                 background-position: 0 25%;
495             }
496         }
497         /*脚踏动画*/
498         @keyframes pedal1 {
499             0% {
500                 transform: rotate(00deg);
501             }
502             25% {
503                 transform: rotate(-140deg);
504             }
505             50% {
506                 transform: rotate(-180deg);
507             }
508             75% {
509                 transform: rotate(-240deg);
510             }
511             100% {
512                 transform: rotate(-360deg);
513             }
514         }
515         @keyframes pedal2 {
516             0% {
517                 transform: rotate(00deg);
518             }
519             25% {
520                 transform: rotate(-60deg);
521             }
522             50% {
523                 transform: rotate(-180deg);
524             }
525             75% {
526                 transform: rotate(-340deg);
527             }
528             100% {
529                 transform: rotate(-360deg);
530             }
531         }
532     </style>
533 </head>
534 <body>
535 <div class="cycle-outer">
536     <div class="cycle-wrapper">
537         <!--
538             描述:车架
539         -->
540         <div class="cycle-body">
541             <div class="seat">
542                 <span></span>
543             </div>
544             <div class="front-wheel-frame"></div>
545             <div class="top-frame"></div>
546             <div class="front-frame">
547                 <div class="bottle-holder">
548                     <span></span>
549                 </div>
550             </div>
551             <div class="center-frame"></div>
552             <div class="back-frame"></div>
553             <div class="bottom-frame"></div>
554             <div class="handlebar-front"></div>
555             <div class="handlebar-curve"></div>
556         </div>
557         <!--
558             描述:后轮
559         -->
560         <div class="cycle-wheel cycle-wheel-back">
561             <div class="cycle-wheel-outer">
562                 <div class="cycle-wheel-inner">
563                     <div class="cycle-wheel-inner-padding">
564                         <ul class="spoke-container">
565                             <li class="spoke"></li>
566                             <li class="spoke"></li>
567                         </ul>
568                         <div class="inner-disc"></div>
569                         <div class="inner-disc-2"></div>
570                     </div>
571                 </div>
572             </div>
573         </div>
574         <!--
575             描述:前轮
576         -->
577         <div class="cycle-wheel cycle-wheel-front">
578             <div class="cycle-wheel-outer">
579                 <div class="cycle-wheel-inner">
580                     <div class="cycle-wheel-inner-padding">
581                         <ul class="spoke-container">
582                             <li class="spoke"></li>
583                             <li class="spoke"></li>
584                         </ul>
585                         <div class="inner-disc"></div>
586                         <div class="inner-disc-2"></div>
587                     </div>
588                 </div>
589             </div>
590         </div>
591         <!--
592             描述:中心轴  车链子 牙盘 水壶架  水壶   脚踏
593         -->
594         <div class="chain-up"></div>
595         <div class="chain-bottom"></div>
596         <div class="chain-rotation">
597             <div class="outer-axle"></div>
598             <div class="chain-disc-outer">
599                 <div class="chain-disc-inner"></div>
600             </div>
601         </div>
602         <div class="chain-rods">
603             <div class="pedal-rod"></div>
604         </div>
605     </div>
606 </div>
607 <div style="text-align:center;clear:both;">
608 </body>
609 </html>

链接:https://mp.weixin.qq.com/s/mtYP7ML1pjePszXriuiEEg

原文地址:https://www.cnblogs.com/clubs/p/12370810.html